业务上使用了redis,实际运用场景中发现 redis 连接接过多,导致业务不可用情况。接下来讲下如果查看 redis 连接数和确定是哪些应用在占用 redis 连接。
# 查看 redis 连接数和访问 ip top20
[wj@iU25eGust4uK ~]$ netstat -nat | grep ":6379" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20 7 192.168.0.114 4 192.168.0.143 ... [wj@iU25eGust4uK ~]$ netstat -nat | grep ":6379" tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN tcp 0 5 192.168.0.115:6379 192.168.1.175:51092 ESTABLISHED tcp 0 0 192.168.0.115:6379 192.168.0.143:58958 ESTABLISHED ...
# 查看 192.168.0.143 机器上的 58958 对应哪个应用的程序进程iD
[root@iZ wj]# netstat -nvp|grep 58958 tcp 0 0 192.168.0.143:58958 192.168.0.115:6379 ESTABLISHED 7951/java
# 查看进程id 7951 对应的执行程序
[root@iZ wj]# ps -ef|grep 7951 root 7951 1 0 Oct18 ? 04:28:17 /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.272.b10-0.el6_10.x86_64/bin/java -Dsche xxx xxx java.jar
结果可见,是 java 程序产生的 redis TCP连接