systemd的文件描述符限制引发的问题

背景

最近在测试一个MQTT的server,使用MQTT的client去连接server的时候,发现每次到1020个连接数左右的时候MQTTserver就挂了,而且MQTTserver只打印了一个退出的日志,没有打印其他信息。

问题定位

1)最开始我以为是该MQTT服务的日志没有打印全,于是尝试开启debug模式。打开debug开关后,仍旧没有更多的日志打印出来。

2)我怀疑是系统的文件描述符的限制:ulimit -a 查看打开的文件描述符的限制:远超过1000,看来也不是系统的文件描述符的限制问题。

3)由于该MQTT服务是systemd管理的,我尝试手动运行该MQTTserver,然后重新使用客户端连接,发现MQTTServer连接超过1000后也没有挂掉,于是我怀疑是systemd对进程有相关限制。

经过网上搜索,发现了一些蛛丝马迹,原来systemd管理的进程的日志并不会输出到该MQTTserver中,而是会刷新到另外的日志中,使用journalctl可以查看对应的日志。

输入:journalctl -u xxx.service --since today

看到了该MQTTserver打印的额外日志:

该服务由于打开文件描述符过多,而被systemd给kill了

输入:systemctl show xxx | grep -i limit

 

 

可以看到LimitNOFILELimitNPROC这两项配置太小,需要重新设置。

 

修改systemd的管理文件,加上红框中的配置: 

LimitNOFILE=88888
LimitNPROC=88888

重新加载配置: systemctl daemon-reload ,然后再次查看限制

此时服务的文件描述符限制打开了,而且使用Mqttclient去连接该Mqttserver也不会到1000多报错退出了。

传送门:2021最新测试资料与大厂招聘合集

博主:测试生财(一个不为996而996的测开码农)

座右铭:专注测试开发与自动化运维,努力读书思考写作,为内卷的人生奠定财务自由。

内容范畴:技术提升,职场杂谈,事业发展,阅读写作,投资理财,健康人生。

csdn:https://blog.csdn.net/ccgshigao

博客园:https://www.cnblogs.com/qa-freeroad/

51cto:https://blog.51cto.com/14900374

微信公众号:测试生财(定期分享独家内容和资源)

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

公众号-测试生财

点赞和关注比打赏更重要

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值