文章851
标签121
分类10

Curl 抛错 no route to host

curl ip.me --proxy 127.0.0.1:8888

异常错误 : no route to host

PHP 程序下 curl 使用代理访问

 errNo : 7 errMsg : Failed to connect to 127.0.0.1 port 8888: No route to host

知乎上找到一些答案, 防火墙还是有原因的

这种情况一般是数据包命中了iptables--reject-with icmp-host-prohibited规则。iptables对进入的数据包有三种处理链INPUTOUTPUTFORWARD。从iptables的第一条规则开始执行,如果都没命中,一般在最后会有一条 -A INPUT -j REJECT --reject-with icmp-host-prohibited。这时客户端会显示 No route to hosttcpdump抓包显示服务端返回的icmp包中,Type是3:目的不可达,Code是10:目的主机被强制禁止。

Swoole 出现 deadlock 字样

===================================================================
 [FATAL ERROR]: all coroutines (count: 1) are asleep - deadlock!
===================================================================

 [Coroutine-1]
--------------------------------------------------------------------
#0  Swoole\Coroutine\Http\Client->recv() called at [/opt/webserver/vendor/swlib/saber/src/WebSocket.php:102]
#1  Swlib\Saber\WebSocket->recv() called at [/opt/webserver/script/src/Task/BinanceContract.php:133]
#2  Task\Test->init() called at [/opt/webserver/script/src/Task/BootScript.php:56]

这种错误的出现原因一般是因为协程未结束而 Worker 进程提前退出导致的,这个错误也可手动造成(在任意 Worker 进程内的位置使用 zm_yield() 且不使用 zm_resume() 恢复,期间使用 reloadstop 重启或停止框架就会报错)。

还有一种情况是数据库、文件读取或下载上传还没有传送结束,时间已经超时,在关闭或重启框架时不得不强行切断协程的运行。这种情况建议根据下方的打印输出栈进行插错,建议将协程运行时间长的过程缩短或调长 swoole 配置项下面的 max_wait_time 时间(秒),2.4.3 版本起此参数默认为 5 秒。

">