微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

太多打开的文件卷二

如何解决太多打开的文件卷二

我们的 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 举报,一经查实,本站将立刻删除。