Mac服务器报错处理 | No Route To Host
用Mac当服务器跑应用遇到了问题,陆陆续续解决了一个星期吧,把经验记录一下。
问题现象
我在Mac上跑了Web应用,应用内部需要访问内网IP,如192.168.1.101
之类的。
这些IP有的是中间件比如MySQL、Redis、RabbitMQ之类的,有的是其他Web服务(部署在局域网内其他设备),都是域名+本地hosts方式访问的。
服务启动时没有问题,也能正常用,服务可以正常访问这些IP。
过了一段时间之后——大概就是晚上睡一觉起来的时间——服务就无法访问内网IP了。
日志显示No Route To Host
,重连机制也失败,报同样的错。
最终解决方案
启服务用sudo
启。
没错!就是这样!这是个权限问题!Fxxx Apple!
问题原因
Mac在本地网络访问上是有权限控制的,8小时后(这个时长是检索的时候不知道在哪个讨论帖里看到的)就会拒绝服务的所有本地网络访问。
踩过的坑
DHCP问题
因为这个Mac买回来,DHCP一直有问题,详情在这里,所以刚开始以为是请求发不到路由器导致的,但最后DHCP问题解决了,这个问题也没好。
代码问题
中间还反复看了代码,加了各种重连机制,把三方库里的源码都改了,结果都没用,白费功夫。
Mac设置问题
帖子里说在系统设置
>隐私和安全
>本地网络
里把权限打开,但我的服务是用命令行启动的,不是个标准的Mac OS服务,这个也没用。