首先先了解下如何标识一个链接(记住下面的概念,文章后面要用到),操作系统是通过一个四
{本地ip,本地port,远程ip,远程port}
这四个要素唯一确定一个TCP链接,任意一个要素不相同,就认为是一个不同的链接。
在Linux系统中,一切皆文件,每一个TCP链接都要占用一个文件句柄,系统允许创建的链接数取决于句柄数的上限。超过这个值再创建链接就会报这样的错误:
“Can't open so many files"
通过命令ulimit -n可以查看当前系统允许打开文件数量的上限,在Linux中这个值默认是1024,也就是说默认情况下,只能创建1024个链接。同时这个值也是可以修改的,通过修改/etc/security/limits.conf文件,可以把这个值改大,一般服务器都会改的很大,比如我们的服务器上一般设置为1000000。
那这么说是不是就意味着只要我改的很大,链接数可以无限大了?
上面介绍的一些数据都是理论上单台机器可以支持的TCP链接数,实际情况下,每创建一个链接需要消耗一定的内存,大概是4-10kb,所以链接数也受限于机器的总内存。(链接发起端,活力全开才64000左右链接,内存最多才占用640M,一般客户端都能 满足;内存限制主要还是考虑服务器端)
MySQL服务器的连接数并不是要达到最大的100%为好,还是要具体问题具体分析,下面就对MySQL服务器最大连接数的合理设置进行了详尽的分析,供您参考。\x0d\x0a我们经常会遇见“MySQL:ERROR1040:Toomanyconnections”的情况,一种是访问量确实很高,MySQL服务器抗不住,这个时候就要考虑增加从服务器分散读压力,另外一种情况是MySQL配置文件中max_connections值过小:\x0d\x0amysql>showvariableslike'max_connections'\x0d\x0a+-----------------+-------+\x0d\x0a|Variable_name|Value|\x0d\x0a+-----------------+-------+\x0d\x0a|max_connections|256|\x0d\x0a+-----------------+-------+\x0d\x0a这台MySQL服务器最大连接数是256,然后查询一下服务器响应的最大连接数:\x0d\x0amysql>showglobalstatuslike'Max_used_connections'\x0d\x0aMySQL服务器过去的最大连接数是245,没有达到服务器连接数上限256,应该没有出现1040错误,比较理想的设置是:\x0d\x0aMax_used_connections/max_connections*100%≈85%\x0d\x0a最大连接数占上限连接数的85%左右,如果发现比例在10%以下,MySQL服务器连接上线就设置得过高了。欢迎分享,转载请注明来源:夏雨云
评论列表(0条)