今天在维护服务器的时候,发现其中一台安装了宝塔面板的Linux服务器中的网站错误日志频繁爆出lua udp socket read timed out,client:
这种错误,本人查证了所有的网上已有的帖子,都只是给予一些常规的回复,并没有精确到具体是哪个位置出现了问题。
同时,我在官方论坛也看到有类似提问,最终也还是没有被解决掉。我自己服务器的出错截图就不贴了,免得被有心人关注,官方论坛的出错截图如下:
错误原因:
出现这种问题的原因,是因为错误日志中的这些IP地址访问你服务器的时候出现了网络问题,读取UDP超时。
解决方法:
经过我多方的排查,是因为你自己服务器的DNS设置有问题,导致了错误日志中的这些IP地址在访问你服务器的时候无法到达。可能是自己修改了DNS,也有可能是服务器供应商默认的装机系统里面的DNS是错误的。有些物理服务器供应商是使用了默认该市区或者该省的公用DNS来作为你服务器的DNS,当然这样的DNS有时候会出现网络故障,导致其他省市访问该DNS出现无法触达的情况。这个时候我们最好是改成一些公用的大型DNS,这样能排除这种情况的出现。
这里我们把DNS修改即可,具体修改成以下DNS方可解决。
国内服务器: 主要DNS:114.114.114.114 备用DNS:223.5.5.5
国外服务器: 主要DNS:114.114.114.114 备用DNS:8.8.4.4
其中,备用DNS也可以问一下你的服务器供应商,应该是有一个专用的,如果没有专用的话,也可以按照我们上面的配置修改好。
因为宝塔面板最新版的Linux工具箱在修改完DNS,重启之后又有可能自动还原成原来的DNS,所以我建议大家自行按照如下方法手动修改。
网卡目录:/etc/sysconfig/network-scripts/
,查找到你自己的网卡,一般是ifcfg-eth0
之类的文件,你用宝塔面板点开文件看一下,如果里面有DNS的原始数值,那么你就更改一下。
修改完上述目录网卡文件后,下面还需要更改以下文件:/etc/resolv.conf
,例如改写下面的内容:
nameserver 114.114.114.114 nameserver 223.5.5.5
保存文件并退出编辑器后,SSH登录你的服务器,输入以下命令重启网络服务,当然也可以重启服务器来重启网卡:
sudo systemctl restart network
重启网络服务或者是重启服务器以后,你会发现,lua udp socket read timed out,client:
这个错误已经完美解决了!
proxy.conf文件的调整:
该文件的具体位置/www/server/nginx/conf/proxy.conf
,调整内容如下:
proxy_temp_path /www/server/nginx/proxy_temp_dir; proxy_cache_path /www/server/nginx/proxy_cache_dir levels=1:2 keys_zone=cache_one:20m inactive=1d max_size=5g; client_body_buffer_size 1024k; proxy_connect_timeout 240; proxy_read_timeout 240; proxy_send_timeout 240; proxy_buffer_size 256k; proxy_buffers 32 256k; proxy_busy_buffers_size 256k; proxy_temp_file_write_size 256k; proxy_next_upstream error timeout invalid_header http_500 http_503 http_404; proxy_cache cache_one;
PHP配置文件的修改:
PHP配置中的FPM的配置修改:
宝塔面板的默认配置的数值有不准确的部分,导致我们在使用动态模式的时候,出现问题,尤其是使用Wordpress或者一些需要依靠php动态模式的程序运行时会出现错误提示,其中配置参数需要遵循如下规则:
pm.start_servers= min_spare_servers + (max_spare_servers - min_spare_servers) / 2
根据公式计算出来的,起码你需要更改如下的参数:
当然,上述的参数需要根据你自己机器的内存去自行计算一下,太大或者太小都是不行的,太大的话会造成内存过多消耗,太小的话,导致经常报错。
CDN导致的超时问题:
关于域名使用了CDN后出现lua udp socket read timed out
,使用CDN后出现了上述错误因为你的配置中配置了一些回源设置,例如:SEO搜索引擎回源、同运营商回源、Range回源,在使用这些回源协议的时候,国外的蜘蛛以及有些伪装的蜘蛛或者伪装成蜘蛛的攻击会击穿CDN,直接返回源服务器,或者就是CDN服务商默认的安全扫描,也是会回源扫描你的服务器。如果你不是非常必要使用回源的话,那么可以直接关闭掉,关掉回源后,这个错误一般是不会存在的。
如果之前使用了CDN,而现在已经不使用CDN了,那么需要去管理CDN的控制台删除掉域名,有些CDN即便不使用了,也会不间断探测源服务器的相关网络,而这种探测是一直存在的,直至你删除域名为止,国内几家大厂的CDN,你不用他们CDN的时候必须要手动停止掉,不然的话一直会探测回源,且探测的端口不只是web端口,其他端口也会探测,可能是安全扫描。只要是用了CDN,非常容易出现本文标题中的错误提示。当然,有些国外机器使用了CF防火墙、亚马逊CDN等国外CDN也会出现,同样的道理,都是CDN的扫描导致的这个问题。拒绝使用CDN的回源,这个错误提示也就不存在了。
有些站长是买的老域名来建站,可能这些老域名以前就被人CDN解析过,所以拿过来随便弄个程序,也会有这种情况出现。如果是随便放个什么程序都有这种情况出现的话,那么可以不用管他了。或者如果有强迫症的话,那么你可以注册一下出错IP段的那个CDN的账户,然后认证一下自己网站,认证过后,再停止和删除,就不会出现这种问题了。
2024年4月27日更新:
关于屏蔽国外垃圾蜘蛛的问题,稍微懂点技术的朋友,还可以参考以下的文档对Nginx进行相应的配置:《屏蔽SemrushBot等国外垃圾营销蜘蛛》
以上就是《宝塔面板中网站错误日志lua udp socket read timed out》问题的解决方案,同时希望大家多多支持站长课堂,我们会经常更新各类服务器的相关问题的解决方案。