如何解决太多打开的文件卷二
我们的 JBoss 服务器面临“打开的文件太多”的问题。
我们对“appuser”的 ulimit 设置为:
core file size (blocks,-c) 0
data seg size (kbytes,-d) unlimited
scheduling priority (-e) 0
file size (blocks,-f) unlimited
pending signals (-i) 46987
max locked memory (kbytes,-l) 64
max memory size (kbytes,-m) unlimited
open files (-n) 30000
pipe size (512 bytes,-p) 8
POSIX message queues (bytes,-q) 819200
real-time priority (-r) 0
stack size (kbytes,-s) 8192
cpu time (seconds,-t) unlimited
max user processes (-u) 4096
virtual memory (kbytes,-v) unlimited
file locks (-x) unlimited
新版本的问题,jboss不是通过sh脚本启动的,而是使用系统服务启动的。系统服务在 root 用户下运行,但应用程序在“appuser”下启动。
我已经检查了 lsoft 输出,但我对这个输出并不聪明(42777 是我们的 java 进程的 PID)
lsof | awk '{ print $2 " " $1; }' | sort -rn | uniq -c | sort -rn | head -20
261798 42777 default
55071 42777 elasticse
48049 42777 cluster-C
19142 42777 java
19117 42777 MSC
12060 42777 ActiveMQ
9609 42777 CleanCurs
9570 42777 ServerSer
7227 42777 managemen
7203 42777 expiratio
7173 42777 AsyncAppe
7151 42777 Transacti
4861 42777 pool-1154
4849 42777 pool-1178
4834 42777 pool-1122
4811 42777 Deploymen
4769 42777 VM
4769 42777 Reference
4760 42777 C2
2432 42777 pool-1164
结果显示几乎有 50 万个打开的文件。如果限制为 30 000,怎么可能?
ls -d /proc/[1-9]*/fd/*|cut -d/ -f3|sort |uniq -c |sort -rn|head
2743 42777
91 1352
51 1
28 609
19 861
16 860
16 844
15 1090
13 1098
13 1097
当应用程序启动失败时,ls -d 命令也会返回大约 2500 个打开的文件,这与我们的限制设置为 30000 无关。
我们应该检查什么?
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。