转--Server “**” has shut down the connection prematurely一例分析

近几天在性能测试过程中,发现loadrunner Controller经常报 Server “**” has shut down the connection prematurely 。概率很高,现象很奇怪。网上有很多说法,各有不同,但貌似都不正确,只能靠自己追踪。
根据经验仔细分析,发现可能跟下列因素有关:
 (1)loadrunner客户端服务器网卡资源不足;
 (2)tcp/ip或者http connection keepalive连接超时时间设置太长,造成无连接可用;
 (3)应用服务端有问题。

一、用事实做详细的对比:

分析:从对比结果来看,shut down的比例跟loadrunner客户端确实有关系,但无论客户端怎样改变,还是该现象出现,而且比例始终超过万分之1。


loadrunner服务器数量


TcpTimedWaitDelay键值


并发用户数


平均TPS


shut down比例


1台


30s


13


76.195


万分之18.4


1台


10s


7


66.49


万分之10.8


2台


10s


7


85.994


万分之1.39


2台


10s


2


33.544


万分之1.23

至此,可以排除loadrunner客户端的原因。

二、转向服务端,在dpm服务器上,发现apache占用很大的资源,而且有报错:
   (1)在压力情况下,apache(httpd进程)占用的物理内存,平均每秒增涨4M,非常恐怖;
   (2)Apache日志中有三类报错信息:
      a、 [Tue Jun 30 18:54:37 2009] [error] [client 192.168.**.**] unable to init Zlib: deflateInit2 returned -4: URL /distributor/product/my_product_list.htm
      b、 [Tue Jun 30 18:54:38 2009] [notice] child pid 28699 exit signal Segmentation fault (11)
      c、Memory allocation failed.

分析:经过观察,推论出httpd进程占用物理内存狂增,导致服务器没有剩余资源分配给它,造成memory allocation failed。

三、修改和屏蔽一些apache配置项,例如减少SendBufferSize所占空间、屏蔽CustomLog日志。都无济于事。

问题到底出在哪? 欲知后事如何,敬请关注该主题的下一篇blog。

上一篇Blog讲到,性能测试过程中发现server shut down现象,经过追踪,定位到是apache子进程狂吃内存。

根据经验,判断问题可能出在apche加载某个/某些模块上。于是,使用“拆分问题,隔离分析”的分析方法。先隔离出apache加载的所有模块。再采取注释、重启、验证的方式,逐步缩小隔离范围。最终定位出瓶颈点。

系apache在加载一个Taobao**_module时,每秒消耗4M内存,导致apache占用的物理内存不断增涨,当涨至操作系统能分配给apache的最大内存时,apache子进程死掉。在老的子进程死亡和新的子进程创建的时间间隔,有请求过来,系统自然没有响应,从loadrunner那端看,就是server shut down。

真相得以大明。接下来就是对这个模块进行优化了。

一个 1.84/千 ,背后竟然隐含如此巨大的性能问题。如果不深究,问题很快就被忽视了,系统上线之后,不被上帝眷顾的用户很有可能就打不开网页了。整个瓶颈查找的过程,我想可以让我们想到以下几点:

1. 性能测试工程师需要具备敏锐的观察力,再小的概率,只要出错,必定深究;

2. 性能测试工程师需要有清晰的思路,先查什么,后查什么,要设计得很明确;

3.  除了注重jboss和java程序,apache也应当重点关注,特别是出现error的时候;

4. “拆分问题,隔离分析”的方法确实很实用;

5. 尽信书不如无书,遇到具体问题要具体分析。

时间: 2024-10-11 11:27:12

转--Server “**” has shut down the connection prematurely一例分析的相关文章

sql server 性能调优之 CPU消耗最大资源分析1 (自sqlserver服务启动以后)

原文:sql server 性能调优之 CPU消耗最大资源分析1 (自sqlserver服务启动以后) 一. 概述 上次在介绍性能调优中讲到了I/O的开销查看及维护,这次介绍CPU的开销及维护, 在调优方面是可以从多个维度去发现问题如I/O,CPU,  内存,锁等,不管从哪个维度去解决,都能达到调优的效果,因为sql server系统作为一个整体性,它都是紧密相连的,例如:解决了sql语句中I/O开销较多的问题,那对应的CPU开销也会减少,反之解决了CPU开销最多的,那对应I/O开销也会减少.解

SQL Server ->> DAC(Dedicated Administrator Connection)专用管理员连接

专用管理员连接是一种特殊的SQL Server服务器诊断性质的连接,用于在正常或者说标准连接形式无法连接SQL Server服务器的情况下连接到服务器进行服务器性能或者错误诊断.DAC同样支持安全加密而且只能是sysadmin服务器角色组的成员才有权限使用DAC.默认情况是不允许从服务器以外的客户端开启DAC连接的,除非以及通过sp_configure设置了允许remote admin connections.DAC的监听端口是1434. 通过SSMS使用DAC 在输入服务器名字的时候在服务器实

Ambari Server网口带宽占用率很高问题的分析和解决办法

Ambari是Hortonworks出一款开源Hadoop管理系统,是用python写的,目前市场是开源的Hadoop管理系统好像就只有这一个,虽然Ambari问题很多,也不好用,但也没办法了. 最近监控系统经常报警说一个url老是不可达,只是一个ambari服务器的url . 于是登录到服务器上一探究竟. 用iftop查看网络状况,发现网络占用率很高,达到了700Mbps,而且一直居高不下,网卡最大带宽是1000Mbps,被用掉了一大半,怪不得会报警,这是不正常的. 再仔细看,发现ambari

使用VisualSVN Server搭建SVN服务器 (Windows环境为例)

使用 VisualSVN Server来实现主要的 SVN功能则要比使用原始的 SVN和 Apache相配合来实现源代码的 SVN管理简单的多,下面就看看详细的说明. VisualSVN Server的下载地址如下,是免费的,随意不必有顾虑 http://www.visualsvn.com/server/download/ SVN 的下载地址如下 http://tortoisesvn.net/downloads.html [1]使用SVN,首先要安装TortoiseSVN,就是上面的SVN下载地

高并发下无法拿到redis connection问题调试与分析

我们组的搜索服务在业务量大时会时不时出现应用拿不到redis 的connection,整个程序的所有线程都卡在如下的位置,导致前端的新请求进不来,搜索服务假死,整个程序无响应. Thread 4 (Thread 0x7ff97222d700 (LWP 222201)):#0 0x000000339f2e15e3 in select () from /lib64/libc.so.6#1 0x00000000009628fc in redisContextWaitReady ()#2 0x00000

SQL Server索引进阶第十一篇:索引碎片分析与解决

相关有关索引碎片的问题,大家应该是听过不少,也许也很多的朋友已经做了与之相关的工作.那我们今天就来看看这个问题. 为了更好的说明这个问题,我们首先来普及一些背景知识. 知识普及 我们都知道,数据库中的每一个表要么是堆表,要么就是包含聚集索引的表,或者我们称之为有序表.如果表是一个堆表,那么在使用非聚集索引查询数据的时候,会使用书签查找去底层的数据表中去检索需要的数据,这个书签查找会通过每一个索引中包含的行标识(RID)去定位每一个底层数据表的数据行.如果表上面有聚集索引,那么在使用非聚集索引查找

SQL Server AlwaysON从入门到进阶(6)——分析和部署AlwaysOn Availability Group

前言: 本节是整个系列的重点文章,到现在,读者应该已经对整个高可用架构有一定的了解,知道独立的SQL Server实例和基于群集的SQL Server FCI的区别.上一节已经介绍了如何安装SQL Server Failover Cluster Instance(FCI)及其要求. 本节会深入AlwaysOn 可用组的内容,以演示部署为主线,包括如何启用只读路由和使用AlwaysOn组侦听器.并在最后演示故障转移. 在前面文章中对FCI和AlwaysOn可用组有了一定的平台要求.这里对其进行简要

关于Aborted connection告警日志的分析

前言:? 有时候,连接MySQL的会话经常会异常退出,错误日志里会看到"Got an error reading communication packets"类型的告警.本篇文章我们一起来讨论下该错误可能的原因以及如何来规避. 1.状态变量Aborted_clients和Aborted_connects 首先我们来了解下Aborted_clients和Aborted_connects这两个状态变量的含义,当出现会话异常退出时,这两个状态值会有变化.根据官方文档描述,总结如下: 造成Ab

LR常见问题整理

1.LoadRunner录制脚本时为什么不弹出IE浏览器? 当一台主机上安装多个浏览器时,LoadRunner录制脚本经常遇到不能打开浏览器的情况,可以用下面的方法来解决. LR11 无法弹出ie浏览器,或者ie已停止工作问题的解决方法汇总 . 1)系统属性,高级选项卡下,性能里面,单击设置按钮,修改数据执行保护为“只为关键windows程序和服务启用数据执行保护”,然后,重启: 上述方法我采用了第一个,重启后问题解决. 2)若果被测试系统在本机上,访问地址为:http://127.0.0.1: