告警群中出现服务重启并重新注册信息,上去排查重启原因,登录rancher上看,现在food-match-01这台机器上的服务已经挂了。
(SQL [insert into `service_log` (`account_id`, `kind`, `description`, `created`, `data`, `end_time`, `event_type`, `service_id`, `instance_id`, `transaction_id`, `sub_log`, `level`) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]; (conn:192326283) Data too long for column 'description' at row 1 Query is: insert into `service_log` (`account_id`, `kind`, `description`, `created`, `data`, `end_time`, `event_type`, `service_id`, `instance_id`, `transaction_id`, `sub_log`, `level`) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?), parameters [5,'serviceLog','Removing bad service instance: Error response from daemon: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 2, stdout: , stderr: runtime/cgo: pthread_create failed: Resource temporarily unavailable SIGABRT: abort PC=0x7fe482ce4fb7 m=0 sigcode=18446744073709551610 goroutine 0 [idle]: runtime: unknown pc 0x7fe482ce4fb7 stack: frame={sp:0x7ffcb98d7fc0, fp:0x0} stack=[0x7ffcb90d94b8,0x7ffcb98d84e0) 00007ffcb98d7ec0: 00007ffcb98d7ec0 000000c42007dfe0 00007ffcb98d7ed0: 0000000000000000 00005636d72594a0 00007ffcb98d7ee0: 0000000000000000 0000000000010000 00007ffcb98d7ef0: 0000000000000003 000000c42007dfd8 00007ffcb98d7f00: 00005636d725bde0 ...)
- 途中看到有runtime信息,上到服务器查看docker服务日志:
cleanup: failed to delete container from containerd: no such container
执行docker ps 都出现一堆go的错误信息,乱码。
2.查看服务器内存,CPU ,以及看监控。发现此服务器近几个小时后资源并没有饱和。
- 这时想看看containerd的服务日志,发现已经无法补全了。很多命令在补全或者执行时都报:
Resolve Issue: Bash: Fork: Retry: Resource Temporarily Unavailable
这时可以判断出是系统本身层面的问题了。
- 网上查阅一番,发现是系统打开文件资源池满了。临时调整参数
- 加大 文件打开句柄-n 和用户允许最大进程数-u
ulimit -a查看参数
ulimit -n 181072 #此前为131072
ulimit -u 755300 #此前为655300
最简单的验证,再次执行docker ps ,已经没问题了。
重新部署服务,也正常运行了。
整改:
刚刚是临时调整,现在永久调整一下:
/etc/profile 最后添加
ulimit -u 755350
ulimit -n 181072
source /etc/profile
以后每次登录都会重新初始化