背景

OAM在登录出错时,会跳到OAM错误页面,如图

该页面是OAM的标准错误页面,非常的不友好,当用户面对这么一个页面时,根本不知道如何操作。下面介绍如何自定义该页面

实现

  • 下载**oam-server.ear**

登录OAM后台,在目录$MIDDLEWARE_HOME/Oracle_IAM1/oam/server/apps目录下找到oam-server.ear,将其下载到本地

MIDDLEWARE_HOME是中间件目录,比如/data/fmwhome/Oracle/Middleware/Oracle_IAM1/oam/server/apps

Read the rest of this entry

背景

mysql在Linux系统中默认是区分大小写的,也就是userUSER是两张不同的表,而且后期这个参数是无法修改的,修改的话需要清空数据,成本非常高,而且最新版也没有针对这个问题的改进,这个设计我想不出是出于什么目的,因为实际情况是一个数据库可能很多系统共用,有些需要区分大小写,有些不需要,如果前期没有发现这问题,后期就要重新搭建一个数据库做数据迁移,除了要搞死mysql外,我想不出有什么其他理由oracle要这么设计。

Read the rest of this entry

写在前面

长期以来,我一直用的是git命令行管理代码,当只有一个人时,这完全没问题,但参与团队协作,命令行就显得令不从心,这并不是说命令后做不到,只是命令需要记住太多的命令,学习成本太高,而且在解决冲突上面,如果只靠命令后,那种感觉你体验过一次就再也不想体验。在花了一两天时间研究idea的git工具后,我就决定彻底放弃命令行拥抱gui,因此这边将这两天的研究成果记录下来,供大家学习参考。

Read the rest of this entry

背景

某项目一个查询界面,在没有人访问情况下,接口返回时间在3s+,压测50并发平均响应时间在8s+

在没有高并发情况下,出现接口慢大概率是SQL查询效率慢问题。

排查

Arthas trace命令可以观察方法执行时间,并且记录调用其他方法所用的时间,找到接口的代码,trace其调用方法(一般在service层进行观察)

Read the rest of this entry

背景

某客户审批系统报错,界面上提示审批失败

接口没有其他错误信息,后台也没有报错,找到接口代码,代码如下:

public Map executeTaskAction(.....) throws TaskActionException {
        //....省略不关键代码
        try {
            this.activitiService.executeTaskAction(iRequest, taskId, actionRequest, false);
            stringStringHashMap.put("success", true);
            return stringStringHashMap;
        } catch (Exception e) {
            stringStringHashMap.put("success", false);
            stringStringHashMap.put("message", "发放失败");
            return stringStringHashMap;
        }
    }

Read the rest of this entry

背景

企业客户服务器一般都是在内网,并且会限制服务器访问外网,保证服务器的安全,但这样造成了很多不便,比如yum之类的包安装工具就无法使用,做得好的企业会搭建一个私有仓库,仓库可以代理到中央仓库,但根据经验,大部分企业都做不好私有仓库,很多程序用yum一行命令就可以安装好,如果离线安装,需要安装好所有的依赖,还不一定能安装好,那么如何在离线情况下也能借助yum安装程序呢,本文就来探讨这个问题。

实现

其实yum最方便的是可以帮我们解决依赖关系,并且自动安装好所有的依赖,假设yum可以把所有的依赖都下载下来,那么其实就解决了最麻烦的问题,我们拿到这些依赖一个个安装好就行。幸运的是,yum不仅提供下载依赖的功能,而且可以一次性安装好所有下载好的依赖。我们以安装 openssl为例。

Read the rest of this entry

介绍

liferay是开源的门户解决方案,和oracle webcenter site是同一类产品,在开源的门户产品中,liferay算是比较优秀的,界面简洁现代,安装方便,自定义能力强,但架构较老,还是jsp架构,可能是由于开发时间较早的原因,但总体瑕不掩瑜,如果对架构并没有过多的要求还是可以考虑。

Read the rest of this entry

背景

某客户实施DAP,在上线前需要对DAP进行压力测试,有专门的压力测试环境,并且要求并发能够达到1000,团队使用jmeter作为压测工具,整个系统架构很简单浏览器->Nginx->Tomcat,在压测的时候碰到以下问题

  • 对DAP流程提交接口进行压测,压测不通过
  • 部署一个仅仅返回请求参数,没有任何业务逻辑,压测不通过
  • 绕过Nginx,直接对Tomcat进行压测,压测通过
  • 直接对Nginx进行压测,压测Nginx welcome页面,压测不通过

并且对Nginx进行了大量的调优,能调的参数基本都试过,压测不通过,总结下来就是,只要经过Nginx,压测就不通过,看来问题出现在Nginx上

Read the rest of this entry

介绍

Apache SkywalkingApache基金下由国人开发的分布式链路追踪系统,Skeywalking可以为微服务,云原生应用提供可视化链路追踪服务,通过Skywalking可以方便的查看服务的调用链路和性能瓶颈。 ELK是三个项目首字母的缩写,分别为Elasticsearch、Logstash 和 Kibana,Elasticsearch 是一个搜索和分析引擎。Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等“存储库”中。Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。通过ELK用户可以在Kibana中方便查询应用日志,借助Elasticsearch强大的搜索能力,对于大数据量的日志也能进行快速检索。

Skywalking和ELK的集成,实际上就是将日志和调用链路关联起来,在交易出问题需要排查时,可以在Skeywalking查看其调用链路以及调用时长,到具体日志,需要到ELK中进行查看,两个系统需要有个标识符能够将其关联起来,这个标识符就是Trace id,skywalking会为每一笔交易生成一个traceid,在服务的调用链中会将该id传递到各个调用节点,服务在打印日志时,需要将该id带上,这样就能将其关联起来。

Read the rest of this entry

,

0x00 介绍

grafana是一款开源的数据可视化产品,支持prometheus等多种数据源,界面效果炫丽,操作方便灵活,支持大屏展示模式。grafana是目前最适合做prometheus数据可视化的产品,虽然prometheus也提供了可视化功能,但功能太弱无法满足大部分生产需求,prometheus的强项在于数据存储和数据查询,grafana的强项在于数据展示,两个系统配合就能打造强大的监控系统。

0x01 QuickStart

我们通过一个展示cpu使用率的面板来快速上手grafana

配置数据源

我们首先需要配置一个数据源,在界面点击Configuration-> Data Sources进入数据源创建界面,选择Prometheus数据源

Read the rest of this entry

,