• 线上系统问题定位


    一、线上系统查看命令

    (1)查看系统限制

    cat /proc/sys/kernel/pid_max #查看系统支持的最大线程数(相当于理论值)
    cat /proc/sys/kernel/thread-max
    max_user_process(ulimit -u) #系统限制某用户下最多可以运行多少线程
    cat /proc/sys/vm/max_map_count #硬件内存大小

    (2)JVM虚拟机本身限制

    -Xms #Inital java heap size
    -Xmx #Maximum java heap size
    -Xss  #The stack size for each thread
    

    (3)查询当前某程序的线程或者进程数

    pstree -p `ps -ef|grep XXX |awk '{print $1}'`|wc -l
    或
    pstree -p PID |wc -l

    示例:

    获取Tomcat进程PID
     ps -ef|grep tomcat
    统计该tomcat进程内的线程个数
     ps -Lf PID|wc -l
    

    (4)查询当前整个系统已用的线程或者进程数

    pstree -p | wc -l
    

     参见:http://lisiqi.cc/技术/2015/12/24/一次线上多线程bug修复.html

    (5)内存使用情况查询

    ./jstack pid|grep "on condition" |wc -l
    A.heap usage
      jmap -heap pid
    B.dump文件
      jmap -dump:live,format=b,file=XXX.bin pid

     参考:http://www.cnblogs.com/hechao123/p/7251682.html

     一次Tomcat hang住问题排查手记:https://www.zybuluo.com/zhanjindong/note/25710

     Tomcat性能参数优化:http://blog.csdn.net/fcly2013/article/details/54945591 

     Java服务线上系统性故障:http://techblog.youdao.com/?p=961

    (6)指定端口的TCP连接数

    netstat -an|grep 7090|wc -l
    #查看某个端口TCP连接来源并排序
    netstat -antl|grep ^tcp|grep ":2181"|awk '{print $5}'|awk -F":" '{count[$1]++}; END{for(ip in count) print ip, ":" count[ip]}'
    |sort -n -k3 -r
    #找到最多的TCP对应的机器,在那台机器上查看哪个进程占用的最多连接
    netstat -anp|grep ":2181"|awk '{print $7}'|awk -F"/" '{print $1}'|sort|uniq -c|sort -nr
    

    二、线上系统启动

      (1)redis启动

    src/redis-cli -h 10.2.137.141 -p 6379
    Server模块
    nohup /data01/public/redis/redis_cluster1/src/redis-server /data01/public/redis/redis_cluster1/redis.conf &
    nohup /data01/public/redis/redis_cluster1/src/redis-sentinel /data01/public/redis/redis_cluster1/sentinel.conf &
    Master模块
    nohup /data01/public/redis/redis_cluster2/src/redis-server /data01/public/redis/redis_cluster2/redis.conf &
    nohup /data01/public/redis/redis_cluster2/src/redis-sentinel /data01/public/redis/redis_cluster2/sentinel.conf &
    nohup /data01/public/redis/redis_cluster3/src/redis-server /data01/public/redis/redis_cluster3/redis.conf &
    nohup /data01/public/redis/redis_cluster3/src/redis-sentinel /data01/public/redis/redis_cluster3/sentinel.conf &
    

     config set slowlog-log-slower-than 指定执行时间超过多少微秒

     (2)Flume启动

    nohup /data01/java/flume/bin/flume-ng agent -c conf/ -f /data01/java/flume/conf/xxx.properties -n agent -Dflume.root.logger=INFO,console >/dev/null 2 &
    

    (3)ELK启动

      A.Logstash启动

    nohup bin/logstash -f config/translate.beats-es4.conf &
    

    B.ElasticSearch启动

    nohup ./elasticsearch &
    

    C.Kibana启动

    fuser -n tcp 5601
    nohup ./kibana &
    

      

      

  • 相关阅读:
    使用setTimeout()代替setInterval()
    音视频入门-02-RGB拼图
    音视频入门-01-认识RGB
    CMake入门-04-自定义编译选项
    CMake入门-03-还是HelloWorld
    CMake入门-02-HelloWorld扩展
    CMake入门-01-从HelloWorld开始
    HTML页面启动sass监听编译成css文件
    安装+配置Express
    安装+配置Nginx
  • 原文地址:https://www.cnblogs.com/moonandstar08/p/7507360.html
Copyright © 2020-2023  润新知