[实践OK]Linux下查看进程打开的文件句柄数的排序命令: lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more ,Linux下查看及修改进程打开的文件句柄数量和进程数,并按句柄数求和。 Linux下查看进程打开的文件句柄数

jackxiang 2016-6-5 00:53 | |
#其中按进程统计句柄数 第一列是打开的句柄数,第二列是进程ID。
lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr
#其中按句柄类型统计句柄数 其中REG代表文件
lsof -n|awk '{print $5}'|sort|uniq -c|sort -nr
#查看总共文件句柄数
lsof|wc -l
#查看网络句柄数 和用netstat统计一样,原理是:linux中一切皆文件(内存、网络、硬盘。。。)
lsof |grep IPv4|wc -l
lsof |grep TCP|wc -l


来自:https://blog.csdn.net/bolg_hero/article/details/77622616
=======================================================================================
背景:有时候出现句柄数不够用的情况,得用awk去统计一下各个进程的句柄数之和是否超过设置的句柄数了,cat /tmp/runProNumFds.txt | awk '{a=a+$1}END{print a}' ,这样好再次重新设置一下句柄的值。
ulimit -n
65535

----查看当前进程打开了多少句柄数

# lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more


压力测试时一看这些句柄数的一个情况,如下:
lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr
1063 23973
1030 23975
739 23972
522 23971
139 64672
136 3569
136 3568
136 3454
136 3450
136 3449


lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr >> /tmp/runProNumFds.txt
简单的把第1列加起来:
cat /tmp/runProNumFds.txt | awk '{a=a+$1}END{print a}'
47465
Awk求和参考自:http://blog.sina.com.cn/s/blog_710844930100pzxj.html

ps aux|grep -E "23975|23972|23973|64672"
root      4374  0.0  0.0 103316   880 pts/1    S+   17:25   0:00 grep -E 23975|23972|23973|64672
www      23972  2.2  0.1  65656 22788 ?        S    15:09   3:00 nginx: worker process                                          
www      23973  3.1  0.1  65656 22784 ?        S    15:09   4:16 nginx: worker process                                          
www      23975  1.9  0.1  65656 22780 ?        S    15:09   2:39 nginx: worker process                                          
root     64672  0.3  0.0 576792  6536 ?        Ss   17:09   0:03 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)  
============================================================================


背景:做一些大量的句柄打开的操作,很有必要看到底打开了多少。如inodity监控啥的。
[root@mongodb11 ~]# ulimit -a
                     ......
open files                      (-n) 1024
                     ......


----查看当前进程打开了多少句柄数
# lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more
131 24204 
57 24244  
57 24231   ........
其中第一列是打开的句柄数,第二列是进程ID。





---查看系统默认的最大文件句柄数,系统默认是1024

# ulimit -n

1024



----查看当前进程打开了多少句柄数

# lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more

131 24204 

57 24244  

57 24231   ........

其中第一列是打开的句柄数,第二列是进程ID。

可以根据ID号来查看进程名。

# ps aef|grep 24204

nginx  24204 24162 99 16:15 ?    00:24:25 /usr/local/nginx/sbin/nginx -s



Linux有硬性限制和软性限制。可以通过ulimit来设定这两个参数。方法如下,以root用户运行以下命令:

# ulimit -HSn 4096

以上命令中,H指定了硬性大小,S指定了软性大小,n表示设定单个进程最大的打开文件句柄数量。个人觉得最好不要超过4096,毕竟打开的文件句柄数越多响应时间肯定会越慢。设定句柄数量后,系统重启后,又会恢复默认值。如果想永久保存下来,可以修改.bash_profile文件,可以修改 /etc/profile 把上面命令加到最后.

原文:http://leequery.blog.163.com/blog/static/1684220962010101023743567/

更多:http://liuzhigong.blog.163.com/blog/static/1782723752013817916611/

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/8731/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2024-2-26 23:58
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]