并发压力测试(三)server的监控
查看JBOSS服务器的情况
JBOSS进程号
>ps -aux | grep jboss
根据进程号查看打开的文件数量
>lsof -p 1885(进程号) | wc -l
根据进程号列表打开的文件和链接
>lsof -p 1885(进程号)
我还写了个SHELL脚本去查看watch.sh:
while [ 1 ]
do
date; lsof -p 1977 | wc -l
sleep 10
done
给予权限
chmod a+x watch.sh
查看操作系统的链接限制
所有信息
>ulimit -a
用户打开文件数
>ulimit -n
设置链接数
>ulimit -n 5000(设置到5000,一般默认1024)
这篇文章提到要注意httpclient的释放连接
http://hi.baidu.com/justear/blog/item/a4c2b4d12c89bbd5a9ec9aaa.html
但是我仔细检查了一下我们htmlunit2.6中的代码,当然有同事做了一些优化。
2.6代码中 HttpWebConnection.java中onResponseGenerated(httpMethod)会释放连接,
并且每次HttpClient从MultiThreadedHttpConnectionManagerFactory.java池中得到。
配置文件http_connection_pool.properties
我们每次都会去释放连接。
后来和其他公司的同事沟通过,才知道就算有专门调用释放连接,有时在TCP这层还是会CLOSE_WAIT一直挂在那里,不会按照我们配置在HTTP CLIENT上的
30秒超时时间去释放。所以这里还要在操作系统上做一个设置。
有篇文章页提到这个:
http://lhy5201314.iteye.com/blog/586308
以下内容为转载上面BLOG。
/proc/sys/fs/file-max 是整个系统可以打开的文件数的限制,由sysctl.conf控制;
ulimit修改的是当前shell和它的子进程可以打开的文件数的限制,由limits.conf控制;
lsof是列出系统所占用的资源,但是这些资源不一定会占用打开文件号的;比如:共享内存,信号量,消息队列,内存映射等,虽然占用了这些资源,但不占用打开文件号;
1.使用root登陆,修改文件/etc/security/limits.conf
vi /etc/security/limits.conf 添加
xxx - nofile 8192
xxx 是一个用户,如果是想所有用户生效的话换成 * ,设置的数值与硬件配置有关,别设置太大了。
一、 修改方法:(暂时生效,重新启动服务器后,会还原成默认值)
sysctl -w net.ipv4.tcp_keepalive_time=600
sysctl -w net.ipv4.tcp_keepalive_probes=2
sysctl -w net.ipv4.tcp_keepalive_intvl=2
二、 若做如上修改后,可起作用;则做如下修改以便永久生效。
vi /etc/sysctl.conf
若配置文件中不存在如下信息,则添加:
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 15
编辑完 /etc/sysctl.conf,要重启network 才会生效
/etc/rc.d/init.d/network restart
然后,执行sysctl命令使修改生效,基本上就算完成了。
当客户端因为某种原因先于服务端发出了FIN信号,就会导致服务端被动关闭,若服务端不主动关闭socket发FIN给Client,此时服务端Socket会处于CLOSE_WAIT状态(而不是LAST_ACK状态)。通常来说,一个CLOSE_WAIT会维持至少2个小时的时间(系统默认超时时间的是7200秒,也就是2小时)。如果服务端程序因某个原因导致系统造成一堆CLOSE_WAIT消耗资源,那么通常是等不到释放那一刻,系统就已崩溃。因此,解决这个问题的方法还可以通过修改TCP/IP的参数来缩短这个时间,于是修改tcp_keepalive_*系列参数:
tcp_keepalive_time:
/proc/sys/net/ipv4/tcp_keepalive_time
INTEGER,默认值是7200(2小时)
当keepalive打开的情况下,TCP发送keepalive消息的频率。建议修改值为1800秒。
tcp_keepalive_probes:INTEGER
/proc/sys/net/ipv4/tcp_keepalive_probes
INTEGER,默认值是9
TCP发送keepalive探测以确定该连接已经断开的次数。(注意:保持连接仅在SO_KEEPALIVE套接字选项被打开是才发送.次数默认不需要修改,当然根据情形也可以适当地缩短此值.设置为5比较合适)
tcp_keepalive_intvl:INTEGER
/proc/sys/net/ipv4/tcp_keepalive_intvl
INTEGER,默认值为75
当探测没有确认时,重新发送探测的频度。探测消息发送的频率(在认定连接失效之前,发送多少个TCP的keepalive探测包)。乘以tcp_keepalive_probes就得到对于从开始探测以来没有响应的连接杀除的时间。默认值为75秒,也就是没有活动的连接将在大约11分钟以后将被丢弃。(对于普通应用来说,这个值有一些偏大,可以根据需要改小.特别是web类服务器需要改小该值,15是个比较合适的值)
【检测办法】
1. 系统不再出现“Too many open files”报错现象。
2. 处于TIME_WAIT状态的sockets不会激长。
在 Linux 上可用以下语句看了一下服务器的TCP状态(连接状态数量统计):
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
返回结果范例如下:
ESTABLISHED 1423
FIN_WAIT1 1
FIN_WAIT2 262
SYN_SENT 1
TIME_WAIT 962
分享到:
相关推荐
"Webserver Stress Tool 7.1.1.229 Setup (Trial Edition)" 是一个压力测试工具的试用版安装程序,很可能是针对Web服务器进行性能测试的。这个工具可能包含以下功能: 1. **并发用户模拟**:可以设置并控制多少虚拟...
在高并发测试中,TCP测试主要关注的是系统在大量并发连接下的稳定性和性能,包括连接建立和释放的速度、丢包后的重传效率以及带宽利用率等。 UDP协议则无需预先建立连接,数据报直接发送,因此在处理高并发时通常更...
JMeter是一款广泛使用的开源性能测试工具,主要用于模拟大量用户并发对Web应用进行负载和压力测试。在复杂的测试场景中,为了全面了解系统在高负载下的性能表现,除了测试请求的响应时间、吞吐量等指标,还需要实时...
压力测试和性能测试是软件质量保证的重要组成部分,它们主要用于评估系统在高负载或并发情况下的行为。压力测试主要是为了找出系统在极限条件下的表现,例如处理大量用户请求或数据处理时的稳定性。而性能测试则关注...
在JMeter测试过程中,结合ServerAgent,我们可以更准确地分析服务器在压力下的性能表现。 使用ServerAgent进行监控的步骤通常包括以下几个部分: 1. **安装与配置**:首先,需要下载ServerAgent的二进制包(如...
在IT行业中,压力测试是一种非常重要的质量保证环节,它用于评估和验证软件系统在高负载或大量并发用户访问下的性能和稳定性。"压力测试2012源码"可能指的是一个专为2012年设计的压力测试工具的源代码,这个工具可能...
Apache提供了多种压力测试工具,其中包括Apache JMeter、ab(ApacheBench)等,这些工具可以帮助开发者和运维人员理解服务器在高并发情况下的表现。 Apache JMeter是一款功能强大的开源压力和负载测试工具,不仅...
在性能测试中,我们会启动多个nats-server实例,模拟高负载环境,以检查其在并发情况下的处理能力和稳定性。 `natscli`是NATS的命令行工具,用于管理NATS服务器,如连接、发布、订阅和查询消息等。在性能测试中,它...
描述中的“可以模拟出上千次的socket链接,对服务器进行压力测试”意味着这个工具能够创建大量的并发套接字连接,以此模拟真实世界中可能出现的高并发网络请求场景。Socket是应用层与TCP/IP协议族通信的抽象表示,...
在进行压力测试前,确保你的Apache服务器配置是优化的,包括设置合适的MaxClients(最大并发连接数)、KeepAliveTimeout(保持连接超时时间)等参数。同时,检查服务器硬件资源,如CPU、内存和磁盘I/O,以确保它们...
为了实现测试目标,采用了Microsoft的Web Application Stress Tool(WAS),这是一款功能强大的压力测试工具,能够模拟大量并发用户对Web应用的访问,从而评估其性能极限。测试计划包括以下关键步骤: 1. **Web应用...
#### 三、并发负载压力测试中的常见问题及其解决方案 根据提供的部分内容,我们可以总结出以下几种常见的问题及其解决方法: ##### 1. 连接失败或超时 - **原因分析**: - 应用服务器配置不足或者存在错误。 - ...
【DBA】,即Database Administrator,数据库管理员,他们在压力测试中负责监控和优化数据库性能,确保在高并发情况下数据的稳定性和效率。 本电子教程可能涵盖以下内容: 1. **LoadRunner基础**:介绍LoadRunner的...
本次压力测试的主要目的是评估河北省公安交通管理信息系统的性能和稳定性,特别是在高并发访问情况下系统的表现。通过模拟大量用户同时访问和操作的情况,可以发现潜在的问题并及时进行优化,以提高系统的整体性能和...
本文将深入探讨使用WebSphere Application Server(简称WAS)进行压力测试的详细步骤,并提供相关教程,帮助你优化和确保Web应用在大规模并发访问时的性能。 【描述】:“WEB压力测试整理文档,详细步骤,相关教程...
2. 服务器监控:可以通过JMeter的Server Monitor组件或集成第三方工具(如JMX监控)监控服务器的CPU、内存、磁盘I/O等指标,以了解系统在压力下的状态。 六、JMeter实战应用 在实际工作中,JMeter可以用于网站、API...
JMeter是一款广泛使用的开源性能测试工具,主要用于模拟大量并发用户对服务器、网络或者数据库等进行压力测试,以评估系统在高负载下的性能和稳定性。在JMeter的生态系统中,ServerAgent是一个重要的辅助组件,用于...
【ServerAgent Jmeter 性能监控】是一种针对服务器性能进行实时监控的有效方法,尤其在进行JMeter压力测试时,能够提供宝贵的性能数据。ServerAgent是由Blazemeter开发的一款工具,设计目的是为了辅助JMeter更好地...
在IT行业中,压力测试是一种非常重要的质量保证环节,它用于评估软件系统在高负载或大量并发用户情况下的性能和稳定性。"xxx.rar_压力测试"这个压缩包可能包含了一套用于进行压力测试的工具和配置文件。让我们逐一...
ServerAgent与JMeter结合使用,能帮助测试人员更准确地了解系统在压力测试中的实际性能。 ServerAgent-2.2.3.zip这个压缩包文件包含了ServerAgent的2.2.3版本。解压后,你将得到一系列用于监控服务器的工具和配置...