solaris – 在UNIX域套接字上导致ECONNREFUSED的原因是什么?
在TCP服务器中,我知道拒绝连接可能是因为
>进程停止侦听,通过在服务器套接字上调用close(现有连接保持打开状态,并拒绝新连接),或者 尝试连接到UNIX域套接字时,ECONNREFUSED的可能原因是什么? 这个问题是为了帮助我缩小a MySQL connection mystery on a Solaris 10 configuration. 解决方法
拒绝连接并不意味着服务器关闭套接字(连接到它后),这意味着没有服务器监听套接字.所以,首先,您的服务器崩溃,然后,客户端拒绝连接. (除非积压已满,如果传递给listen()的积压大小太小,或者您的服务器不能足够快地接受()连接,但我在现实生活中从未见过这种情况).
通常,我会把它归咎于某些防火墙,但是,因为,在你的另一篇文章中,你说它只是间歇性地发生,我想会发生的是:你的mysql服务器崩溃,safe_mysqld重新启动它,这需要几秒钟,并且在在启动阶段,你得到你的连接拒绝错误,因为那里没有服务器听你的.尝试设置每分钟执行“ps -ef | grep mysqld”的cron作业,检查进程ID是否会不时更改,并尝试将这些更改与您的连接拒绝错误消息相匹配. 如果mysqld没有重启,即进程ID保持不变,请尝试类似“truss -v listen,accept -p”的内容.这应该在每次客户端连接时给你一些输出 – 也许你可以匹配“在truss中发生的很多事情”到“??我现在拒绝连接”.但是,不要在负载很重的生产系统上执行此操作,否则桁架会a)将您淹没在输出中并且b)显着降低服务器速度. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |