太多打开的文件卷二

问题描述

我们的 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...