當時產品發現頁面沒法正常發送短信,點擊就報錯「out of memory 」,一看覺得內存溢出,連上服務器 發現內存還有不少。html
同時又發現xhell沒法鏈接服務器。就解決 這個問題 java
[root@apps ~]# cat /var/log/securepython
Jul 19 21:16:22 apps sshd[17349]: pam_unix(sshd:session): session closed for user jgw Jul 19 21:17:53 apps sshd[21807]: Accepted password for jgw from 61.164.59.252 port 6452 ssh2 Jul 19 21:17:53 apps sshd[21807]: pam_unix(sshd:session): session opened for user jgw by (uid=0) Jul 19 21:18:06 apps sshd[21836]: Accepted password for jgw from 61.164.59.252 port 6453 ssh2 Jul 19 21:18:06 apps sshd[21836]: pam_unix(sshd:session): session opened for user jgw by (uid=0) Jul 19 21:18:18 apps su: pam_unix(su-l:session): session opened for user root by jgw(uid=1000)
參考:http://www.javashuo.com/article/p-qsuausuq-bz.html 這個文檔操做並無解決問題。redis
後來查看每一個進程佔用的線程數量:bash
[jgw@redis01 logs]$ ps -ef|grep java|awk '{print "lsof -p "$2" | wc -l"}'|bash #每一個進程的線程數量 116 76 127 0 128 111 124 147 88 236 153 77 310 141 97 299 113
其中發現有個進程的數量上千,就找出此進程,查看線程:服務器
[jgw@redis01 logs]$ ps -T -p 10214 #在ps命令中,「-T」選項能夠開啓線程查看。下面的命令列出了由進程號爲<pid>的進程建立的全部線程。 PID SPID TTY TIME CMD 10214 10214 ? 00:00:00 java 10214 10216 ? 00:00:23 java 10214 10217 ? 00:00:00 java 10214 10218 ? 00:00:00 java 10214 10219 ? 00:00:00 java 10214 10220 ? 00:00:00 java 10214 10221 ? 00:00:00 java 10214 10223 ? 00:00:00 java 10214 10224 ? 00:00:00 java 10214 10225 ? 00:00:00 java 10214 10226 ? 00:00:36 java 10214 10228 ? 00:00:36 java 10214 10229 ? 00:00:08 java 10214 10230 ? 00:00:00 java
用了此命令後發現是ms-code進程鏈接了1000多個redis線程。就殺掉ms-code進程。恢復。session