① linux下面怎麼查詢某個進程正在使用的socket句柄數量
可以通過指令查詢當前進程打開了多少句柄,Linux下有exec函數族可以執行指令,把指令寫進去就行了。
-查看當前進程打開了多少句柄數
# lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more
-根據ID號來查看進程名。
# ps aef|grep ID號
滿意請採納。
② linux如何獲取磁碟的繁忙程度和打開的文件句柄數
磁碟繁忙程度一般用iostat看
可以從 /proc/sys/fs/file-nr,看到整個系統目前使用的文件句柄數量
查找文件句柄問題的時候,還有一個很實用的程序lsof.可以很方便看到某個進程開了那些句柄.也可以看到某個文件/目錄被什麼進程佔用了
③ linux 文件句柄數高怎麼解決
打開文件做文件操作後請及時釋放文件句柄。
檢查一下有哪些文件操作,哪些操作完成後沒有釋放文件句柄。
④ Linux之文件句柄
ulimit:
1,查看進程允許打開的最大文件句柄數
ulimit -n
2,設置進程能打開的最大文件句柄數
ulimit -n xxx
-H 指定資源的硬限制
-S 指定資源的軟限制
hard 代表當前硬限制
soft 代表當前軟體限制
unlimited 代表不限制.
3, 文件限制配置文件
/etc/security/limits.conf
4,文件句柄最大數據配置
配置文件:/proc/sys/fs/file-max
這個參數的默認值和內存大小有氏談早關系,可以使用公式:file-max 內存大小/ 10k.
4.1 建議將整個系統的文件句柄值至少設置為 65536
4.2 echo "65536" > /proc/sys/fs/file-max
4.3 sysctl -w fs.file-max=65536
4.4 echo "fs.file-max=65536" >> /etc/sysctl.conf
5,文件句柄使用情況配置文件:/proc/sys/fs/file-nr
這三個值分別指:系統已經分配出去的句柄數、已經分配但是還沒有使用的句柄數以及系統最大的句柄數殲雀(和file-max一侍滾樣)。
6,查看進程打開的文件句柄數
lsof:列出當前系統打開文件的工具。
⑤ 如何查看LINUX單進程能夠打開的最大文件句柄數
在Linux下,我們使用ulimit -n 命令可以看到單個進程能夠打開的最大文件句柄數量(socket連接也算在裡面)。系統默認值1024。
對於一般的應用來說(象Apache、系統進程)1024完全足夠使用。但是如何象squid、mysql、java等單進程處理大量請求的應用來說就有 點捉襟見肘了。如果單個進程打開的文件句柄數量超過了系統定義的值,就會提到「too many files open」的錯誤提示。如何知道當前進程打開了多少個文件句柄呢?下面一段小腳本可以幫你查看:
lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more
在系統訪問高峰時間以root用戶執行上面的腳本,可能出現的結果如下:
# lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more
131 24204
57 24244
57 24231
56 24264
其中第一行是打開的文件句柄數量,第二行是進程號。得到進程號後,我們可以通過ps命令得到進程的詳細內容。
ps -aef |grep 24204
mysql 24204 24162 99 16:15 ? 00:24:25 /usr/sbin/mysqld
哦,原來是mysql進程打開最多文件句柄數量。但是他目前只打開了131個文件句柄數量,遠遠底於系統默認值1024。
但是如果系統並發特別大,尤其是squid伺服器,很有可能會超過1024。這時候就必須要調整系統參數,以適應應用變化。Linux有硬性限制和軟性限制。可以通過ulimit來設定這兩個參數。方法如下,以root用戶運行以下命令:
ulimit -HSn 4096
以上命令中,H指定了硬性大小,S指定了軟性大小,n表示設定單個進程最大的打開文件句柄數量。個人覺得最好不要超過4096,畢竟打開的文件句柄 數越多響應時間肯定會越慢。設定句柄數量後,系統重啟後,又會恢復默認值。如果想永久保存下來,可以修改.bash_profile文件,可以修改 /etc/profile 把上面命令加到最後。
⑥ 修改linux的最大文件句柄數限制
修改linux的最大文件句柄數限制對於一般的應用來說(象Apache、系統進程)1024完全足夠使用。但是如何象squid、mysql、java等單進程處理大量請求的應用來說就有點捉襟見肘了。如果單個進程打開的文件句柄數量超過了系統定義的值,就會提到too
many
files
open的錯誤提示。如何知道當前進程打開了多少個文件句柄呢?下面一段小腳本可以幫你查看:1lsof
-n
|awk
'{print
$2}'|sort|uniq
-c
|sort
-nr|more修改linux的最大文件句柄數限制的方法:
1)ulimit
-n
65535
在當前session有效,用戶退出或者系統重新後恢復默認值
2)修改profile文件:在profile文件中添加:ulimit
-n
65535
只對當個用戶有效
3)修改文件:/etc/security/limits.conf,在文件中添加:(立即生效-當前session中運行ulimit
-a命令無法顯示)[html]
*
soft
nofile
32768
#限制單個進程最大文件句柄數(到達此限制時系統報警)
*
hard
nofile
65536
#限制單個進程最大文件句柄數(到達此限制時系統報錯)
4)修改文件:/etc/sysctl.conf。在文件中添加:[html]
fs.file-max=655350
#限制整個系統最大文件句柄數
運行命令:/sbin/sysctl
-p
使配置生效
⑦ linux下面怎麼查詢某個進程正在使用的socket句柄數量
一般來說,單個進程,最大文件句柄數(包括socket套接字)是1024,這個是默認值,可以用ulimit修改。不知道你是不是問的這個東西。