Chinaunix首页 | 论坛 | 博客
  • 博客访问: 880115
  • 博文数量: 254
  • 博客积分: 5350
  • 博客等级: 大校
  • 技术积分: 2045
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-27 13:27
文章分类

全部博文(254)

文章存档

2015年(1)

2014年(9)

2013年(17)

2012年(30)

2011年(150)

2010年(17)

2009年(28)

2008年(2)

分类: 系统运维

2011-06-24 10:10:02

1.查看某个服务进程使用连接数及各状态对应连接数
比如调优常常要查看httpd进程数(即prefork模式下Apache能够处理的并发请求数):
#ps -ef | grep httpd | wc -l
出现的结果,就是当前Apache能够处理的多少个并发请求,这个值Apache根据负载情况自动调.
查看Apache的并发请求数及其TCP连接状态:
#netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’
此命令写的比较粗糙,应该考虑其它进程可能占用连接
#netstat -n |grep ':80'|awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’
以下对squid服务器可能有用:
#netstat -n|egrep -e ':3128|:80'|awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’
netstat 命令使用-a选项会将listen端口一并列出

返回结果示例:
LAST_ACK 5
SYN_RECV 38
ESTABLISHED 1600
FIN_WAIT1 51
FIN_WAIT2 515
TIME_WAIT 1857
其中的SYN_RECV表示正在等待处理的请求数;ESTABLISHED表示正常数据传输状态;TIME_WAIT表示处理完毕,等待超时结束的请求数。
状态:描述
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉

2.估算某類進程使用實體內存
连接数理论上当然是支持越大越好,但要在服务器的能力范围内,这跟服务器的CPU、内存、带宽等都有关系。
查看当前的连接数可以用:
ps aux | grep httpd | wc -l
或:
pgrep httpd|wc -l

计算httpd占用内存的平均数:
ps aux|grep -v grep|awk '/httpd/{sum+=$6;n++};END{print sum/n}'
$6 对应实际使用内存,单位为kiloBytes,$5为虚拟内存,单位kiloBytes;可从man ps中了解详情

3.实时检测进程连接数:如httpd进程
watch -n 1 -d "pgrep httpd|wc -l"

查看系统应用程序线程数
ps -eLf|grep httpd|wc -l
ps -eLf|grep mysql|wc -l



查看apache、mysql、php编译参数

apache编译参数:

通过编译安装文件夹下的cat config.status文件进行查看;

或到安装目录如/usr/local/apache 2/build下的config.nice文件查看。

php编译参数:

直接通过命令:/usr/local/php /bin/php -i |grep configure ;

或者通过编译安装文件夹下的cat config.nice文件进行查看;

或利用phpinfo()参数进行查看。

mysql编译参数:

直接通过命令:cat “/usr/local/mysql /bin/mysqlbug”|grep configure ;



阅读(1328) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~