zoukankan      html  css  js  c++  java
  • 记一次线上系统故障(文件句柄引起)

     当时产品发现页面无法正常发送短信,点击就报错“out of memory ”,一看以为内存溢出,连上服务器 发现内存还有很多。

    同时又发现xhell无法连接服务器。就解决 这个问题 

    [root@apps ~]#  cat /var/log/secure

    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)

     参考:https://www.cnblogs.com/zangdalei/p/7693518.html 这个文档操作并没有解决问题。

    后来查看每个进程占用的线程数量:

    [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进程。恢复。

    lsof -p  PID  # 查看打开什么文件,可以更好的定位问题
  • 相关阅读:
    Indy的TCPServer到底能支持多少个连接
    Delphi TStream 详细介绍
    WebAPI下的如何实现参数绑定
    使用 Weinre 调试移动网站及 PhoneGap 应用
    面向对象的三大特征:封装、继承、多态
    轻量级前端MVVM框架avalon
    三种工厂模式的分析以及C++实现
    简单实现TCP下的大文件高效传输
    Nunit NMock Ncover单元测试
    算法实践——数独的基本解法
  • 原文地址:https://www.cnblogs.com/sheng-247/p/11215770.html
Copyright © 2011-2022 走看看