8月1日前广西发生了一次地震, 8月份前又发生了好几次台风,估计对地下的光缆有点损害(比如5根断了2根之类),感觉家里的网速都慢了好多,在客户那里部署的coherence缓存环境也出现了问题,两台hp小机构成的coherence集群环境,客户压力一大就处于集群不可用状态.但停任何一台后,另外一台都能对外提供还算稳定的服务。

针对HP小机服务器的环境,通过运行Coherence自带的网络测试工具datagram-test.sh程序进行了测试,发现如下问题:

在运行Coherence集群的状态下,两台HP小机服务器会出现大量的报文丢包现象,大概50%左右。

两台hp机器之间做diagram-test.sh的情况

一台没有启动coherence的hp和另外一台linux间报文传输情况

同时,对网络传输速度进行测试,发现这两台HP服务器之间的网络传输速度明显低于同一网络下其他服务器之间传输速度。

基于测试情况,直接怀疑是网络因素导致问题的出现。

为了排除问题,我们在linux环境中重新建立了环境,并进行了参数优化

主要优化内容包括:

  • 调整Linux服务器内核参数,调整的参数包括:

vi /etc/sysctl.conf

在文件尾部追加以下内容

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = 2097152

kernel.shmmax = 4294967295

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

使内核生效

sysctl –p

  • 设置Coherence采用ipv4模式

启动命令中加入java.net.preferIPv4Stack=true

  • 设置Coherence绑定ip网段的参数

在tangosol-coherence-override.xml中设置

<address system-property="tangosol.coherence.localhost">10.150.22.0/16</address>

<port system-property="tangosol.coherence.localport">8088</port>

<port-auto-adjust system-property="tangosol.coherence.localport.adjust">true</port-auto-adjust>

<priority>8</priority>

  • 调整Coherence的线程设置,在配置文件中加入thread-count

<distributed-scheme>

<scheme-name>distributed-scheme</scheme-name>

<service-name>DistributedCache</service-name>

<thread-count>50</thread-count>

进行测试的时候发现并发压力一大,同样出现很多错误。错误内容在网络上检查不到任何信息。为此进行第二次优化

  • 客户相关技术人员针对Linux服务器的交换机进行了网络调整与优化
  • 修改了Linux服务器的内核的TCP参数优化

vi /etc/sysctl.conf

在文件尾部追加以下内容

net.ipv4.tcp_tw_recycle=1

net.ipv4.tcp_tw_reuse=1

net.ipv4.tcp_max_syn_backlog=65536

net.core.somaxconn=32768

net.ipv4.tcp_syn_retries=1

net.ipv4.tcp_synack_retries=1

net.ipv4.icp_fin_timeout =2

net.ipv4.tcp_keepalive_intvl = 75

Net.ipv4.tcp_wmem=8192 131072 16777216

Net.ipv4.tcp_rmem=3276 131072 16777216

net.ipv4.ip_local_port_range = 3000 65500

net.core.netdev_max_backlog=32768

使内核生效

sysctl –p

  • 技术人员重新安装了Coherence软件
  • 将Coherence的组播方式转变成单播方式,修改Coherence配置,加入

<well-known-addresses>

<socket-address id="1">

<address system-property="tangosol.coherence.wka">10.150.22.24</address>

<port system-property="tangosol.coherence.wka.port">8088</port>

</socket-address>

<socket-address id="2">

<address system-property="tangosol.coherence.wka">10.150.22.25</address>

<port system-property="tangosol.coherence.wka.port">8090</port>

</socket-address>

</well-known-addresses>

在优化后,通过LoadRunner进行了压力测试,可以看到网络压力,1G的带宽环境网络吞吐最多能达到100m/s。

  • 在linux环境中,在网络带宽跑满的状况下,运行diagram-test并不丢包。
  • 而在hp小机环境下,一台测试时发现网络压力上不去,应该是具备一些自我保护手段,不让报文频繁攻击。保证稳定性。因此发现diagram-test经常丢包。

截图更多的是在linux上压力测试的带宽情况

第二天生产环境中网络带宽情况

结论和总结:

  • Coherence对网络非常敏感,diagram-test.sh和multicasttest.sh是针对网络环境很好的测试工具,引用手册:

The primary items of interest are the throughput and success rate. The goal is to find the highest throughput while maintaining a success rate as close to 1.0 as possible. On a 100 Mb network setup you should be able to achieve rates of around 10 MB/sec. On a 1 Gb network you should be able to achieve rates of around 100 MB/sec. Achieving these rates will likely require some tuning (see below).

  • 了解到hp小机确实是有一些机制来保障稳定性,在压力大的时候drop掉报文
  • 在很难定位问题情况下,必须尝试重新安装Coherence.

Coherence生产环境异常定位过程的更多相关文章

  1. $.cookie 使用不了的问题定位过程

    最近在项目中需要使用到jquery的cookie,按理说在html头中引入jquery-1.7.1.min.js和jquery.cookie.js,然后在js中就可以使用cookie函数了.像这样使用 ...

  2. 记一次OutOfMemory定位过程-续

    在前文<记一次OutOfMemory定位过程>完成时最终也没有定位到ECS 中JVM Heap size无法控制的原因,今天再次尝试终于有了一些线索,翻查了ECS的部署脚本发现了memor ...

  3. 终于彻底搞清楚了spin-lock 之一次CPU问题定位过程总结

    首先这个问题,我只是其中参与者之一.但这个问题很有参考意义,特记录下来. 还有我第一次用"彻底"这个词,不知道会不会有人喷?其实,还有一些问题,也不是特别清楚.比如说什么是CPU流 ...

  4. CentOS 7.1系统自动重启的Bug定位过程

    [问题] 有同事反应最近有多台MongoDB的服务器CentOS 7.1系统会自动重启,分析了下问题原因. [排查过程] 1. 检查系统日志/var/log/message,并没有记录异常信息,jou ...

  5. 谁记录了mysql error log中的超长信息(记pt-stalk一个bug的定位过程)

    [问题] 最近查看MySQL的error log文件时,发现有很多服务器的文件中有大量的如下日志,内容很长(大小在200K左右),从记录的内容看,并没有明显的异常信息. 有一台测试服务器也有类似的问题 ...

  6. 记录一次现网MySQL内存增长超限问题定位过程

    问题现象现网物理机内存近几日内爆涨使用率超过了90%,可用内存从250G,降低到20G以下,报告警.服务器使用情况来看,并没有什么异常.除了QPS缓慢增长外. MySQL内存分配结构 定位这个问题,先 ...

  7. 记录自己的 django管理 开发环境 和 生产环境 配置过程

    背景:自己的博客部署到服务器了,可每次上传服务器都要把配置重新该,包括数据库链接也得改,于是就需要管理开发环境和生产环境配置. 1, 这是目录结构,在blog下新建一个settings包,里面新建有c ...

  8. Android开发:LocationManager获取经纬度及定位过程(附demo)

    在Android开发其中.常常须要用到定位功能,尤其是依赖于地理位置功能的应用.非常多人喜欢使用百度地图,高德地图提供的sdk.开放API,可是在只须要经纬度,或者城市,街道地址等信息.并不须要提供预 ...

  9. 如果一个service服务出现异常,无响应,如何定位,定位过程

    假设一个service服务出现异常,要如何定位

随机推荐

  1. [BZOJ1010][HNOI2008]玩具装箱toy 解题报告

    Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1... ...

  2. BZoj 1003 物流运输 DP+最短路

    2013-09-11 09:56 W[I]代表前I天能取得的最小花费,假设在第J天更改一次路线,那么如果有 W[I]>W[J]+第j+1到第I天的最小花费+更改路线的花费(K) 那么更新W[I] ...

  3. JSON的序列化和反序列化eval()和parse()方法以及stringfy()方法

    1.json解析的方法有两种:eval()和parse()方法 eval() 较危险,不光解析了字符串,还解析了js方法,无论何时用eval()都是非常危险的.-----不建议使用JSON.parse ...

  4. C++ 异常~一 转

    C++ 异常机制分析   阅读目录 C++异常机制概述 throw 关键字 异常对象 catch 关键字 栈展开.RAII 异常机制与构造函数 异常机制与析构函数 noexcept修饰符与noexce ...

  5. 转: Photoshop cs6 快捷键命令大全

    转自: http://www.cnblogs.com/zhen656/p/4249759.html 工具箱(多种工具共用一个快捷键的可同时按[Shift]加此快捷键选取) 矩形.椭圆选框工具.单行单列 ...

  6. php使用curl模拟登录带验证码的网站

    需求是这样的,需要登录带验证码的网站,获取数据,但是不可能人为一直去记录数据,想通过自动采集的方式进行,如下是试验出来的结果代码!有需要的可以参考下! <?php namespace Home\ ...

  7. 一步步打造自己的linux命令行计算器

    相信很多人,在工作中会需要使用到计算器.一般的做法是,打开并使用系统自带的计算器. 这种做法可能对我来说,有如下几个问题. 太慢.每次需要打开计算器,然后改成编程模式,手工选择进制,再使用输入表达式进 ...

  8. 浅谈redux 中间件的原理

    在使用redux管理异步数据流的时候,我们会使用中间件,以redux-thunk中间件为例,我们做一下分析: 首先是构建store,我们需要以下代码进行揉入中间件的类似creatStore函数的构造: ...

  9. Page.Response.Buffer与Response.Redirect一起用报错“无法在发送 HTTP 标头之后进行重定向”

    Page.Response.Buffer与Response.Redirect一起用报错“无法在发送 HTTP 标头之后进行重定向” 原因还未知..

  10. [ 总结 ] Linux 下文件描述符

    1.概述: 文件描述符是内核为了高效管理已被打开的文件所创建的索引.是一个非负整数,用于代指被打开的文件.所有通过I/O操作的系统调用都通过文件描述符. 文件描述符用以表明每一个被进程所打开的文件和s ...