查看進程狀態
- ps命令工具顯示的是進程的瞬間狀態,並不動態連續顯示
- 查看進程啟動時間等參數:
ps -eo pid,lstart,etime,cmd | grep knn
- 查看進程啟動時間等參數:
- 如果想對進程狀態進行實時監控應該用top命令
查看線程數量
-
top -H -p pid
- 開啟線程查看
- 在top運行時也可以通過按“H”鍵將線程查看模式切換為開或關
-
pstree -p pid
-
pstree -p | wc -l
-
ps -mq pid | wc -l
-
ps -efL
- -L:顯示線程信息(輕量級進程)
- 包含LWP(線程ID)列和NLWP(線程數)
-
ps -L p pid; ps -L q pid
-
ps -L -C cmd; ps -T -C cmd
- SPID與LWP:均輕量級進程(線程)的ID號
-
ps -eo pid,lstart,etime,cmd | grep XXX
- -o選項與o選項用法:由用戶自定義格式輸出進程信息
- 單-o選項只輸出用戶指定的字段下 當前用戶會話 中打開的進程
- 單純使用o選項則輸出用戶指定的字段下 所有終端用戶會話 中打開的進程。
查看系統信息
- 查看系統最大線程數
cat /proc/sys/kernel/threads-max
創建線程失敗的原因
- 內存不足
- ulimit的限制
- max memory size:最大內存限制,在64位系統上通常都設置成unlimited
- max user processes:每用戶總的最大進程數(包括線程?why)
- virtual memory: 虛擬內存限制,在64位系統上通常都設置成unlimited
- 參數sys.kernel.threads-max限制
- 系統全局的總線程數限制,如上
- 參數sys.kernel.pid_max限制
- 系統全局的PID號數值的限制
- 參數sys.vm.max_map_count限制
- 單個程序所能使用內存映射空間的數量限制
$ ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 514529
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 655350
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) 514529
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
$ cat /proc/sys/kernel/threads-max
1029059
$ cat /proc/sys/kernel/pid_max
4194303
$ cat /proc/sys/vm/max_map_count
65530
top
free
du
df
代碼問題
- 進程下的線程有3000+
修改limits.conf —— 血的教訓
- 修改 /etc/security/limits.conf
- 在./bashrc中添加
ulimit -u 355350
- 最后導致無法
參考資料
linux中高並發socket最大連接數的優化詳解
Linux下查看某個進程的線程數量
Linux查看某個進程的線程
查看進程之ps命令
Linux最大線程數及最大進程數
Linux最大線程數限制及當前線程數查詢
淺談系統線程數限制
Linux中top顯示的信息詳解