问题现象: ping IP 提示 connect: Resource temporarily unavailable ping 域名(如baidu.com)提示 unknown host baidu.com
排查原因: 1. 确认机器网络可用,DNS配置也没问题,nslookup发现提示错误 isc_socket_bind: address in use
nslookup: isc_socket_bind: address in use
2. 进一步确认发现系统中存在过多JAVA进程的UDP会话,导致系统可用内存不足,新会话无法创建
(还有一种可能是因为系统文件句柄数占用过多,通过 lsof|awk '{print $2}'|wc -l 查看当前占用情况,ulimit -n 查看当前用户句柄数配置)
# ss -s
Total: 31331 (kernel 31535)
TCP: 3622 (estab 2601, closed 624, orphaned 61, synrecv 0, timewait 568/0), ports 1351
Transport Total IP IPv6
* 31535 - -
RAW 0 0 0
UDP 28233 28233 0
TCP 2998 2998 0
INET 31231 31231 0
FRAG 0 0 0
解决方案: 1. 临时kill进程,释放内存,系统可暂时恢复正常(长久解决还是得修正对应程序代码,及时释放socket) 2. 如果是因为句柄数不足,修改当前配置,增加句柄数配置
ulimit -n是设置当前shell的当前用户所有进程能打开的最大文件数量,但是一个用户可能会同时通过多个shell连接到系统,所以还有一个针对用户的限制,通过修改 /etc/security/limits.conf实现,例如,往limits.conf输入以下内容: root soft nofile 1000 root hard nofile 1200 soft nofile表示软限制,hard nofile表示硬限制,软限制要小于等于硬限制。上面两行语句表示,root用户的软限制为1000,硬限制为1200,即表示root用户能打开的最大文件数量为1000,不管它开启多少个shell。
系统全局配置 修改 /proc/sys/fs/file-max 文件
注意:当前环境的用户所有进程能打开的最大问价数量由ulimit -n决定
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。