1. 程式人生 > >Linux server上too many open files問題

Linux server上too many open files問題

server bsp one 當前 java程序 clas gre work -h

之前測試遇到了"too many open files"的問題。ulimit -Hn 查了下發現server上最大open file數是4096。寫了個簡單的腳本檢測發現進程創建的fd個數在不斷增加,8分鐘之後達到上限然後程序報錯,其中絕大部分fd都是關於socket的。

在server上安裝lsof查看當前進程打開文件,並定位出現頻率最高的通信主機和端口。最後發現是一個Java程序bug,每兩秒執行一次的方法會不斷創建新的httpclient。修正bug後進程創建的fd數穩定在24。

lsof -i -a -p $PID 可以列出進程打開的所有network files。所用的簡單檢測腳本為

#!/bin/bash

cd /proc/$(ps -ef | grep appName | grep -v grep | awk {print $2})/fd

while true

do

ls -l | grep socket | wc -l

sleep 5

done 

Linux server上too many open files問題