本节描述方面的MySQL服务器如何管理客户端连接。
服务器能够监听客户端连接多个网络接口。连接管理器线程处理客户端连接请求服务器上的网络接口听:
在所有平台上,一位经理线程处理TCP / IP连接请求。
在Unix上,同样的经理线程还处理Unix socket连接请求的文件。
在Windows上,一个经理线程处理共享内存连接请求,另一个处理命名管道连接请求。
在所有平台上,另一个网络接口可能会使接受行政TCP / IP连接请求。这个接口可以使用经理线程处理”普通的”TCP / IP请求,或一个单独的线程。
服务器没有创建线程来处理接口,它不听。例如,Windows服务器没有启用支持命名管道连接不创建一个线程来处理它们。
单个服务器插件或组件可能实现自己的连接接口:
X插件支持MySQL服务器使用X协议与客户沟通。看到20.5节,“X插件”。
连接管理器线程将每个客户端连接与一个线程专门用于处理身份验证和请求处理的连接。经理在必要时线程创建一个新的线程但尽量避免这样做,首先咨询线程缓存是否包含一个线程可用于连接。连接结束时,它的线程返回到线程缓存的缓存并不完整。
在这个连接线程模型,有尽可能多的线程有客户当前连接,有一些缺点当服务器工作负载必须扩展到处理大量连接。例如,线程创建和处理变得昂贵。此外,每个线程都需要服务器和内核资源,如堆栈空间。容纳大量的并发连接,每个线程堆栈大小必须保持小,导致情况是太小或服务器消耗大量内存。其他资源枯竭可能发生,调度开销会变得重要。
MySQL企业版包含一个线程池的插件,提供了另一个线程处理模型旨在减少开销和提高性能。它实现了一个线程池,增加服务器性能通过有效地管理大量的客户端连接的语句执行线程。看到5.6.3部分,“MySQL企业线程池”。
控制和监视的服务器管理线程如何处理客户端连接,一些系统和状态变量是相关的。(见5.1.8部分,“服务器系统变量”,部分5.1.10,“服务器状态变量”)。
的
thread_cache_size
系统变量决定了线程缓存大小。默认情况下,在启动服务器autosizes价值,但它可以显式地设置覆盖这个默认。的值为0禁用缓存,这将导致一个线程设置为每个新连接和连接终止时处理。要启用N
不活跃的连接线程缓存,集thread_cache_size
来N
在服务器启动或运行时。一个连接线程变得不活跃的客户端连接的时候终止有关。监控线程的数量在缓存中,有多少线程被创建,因为一个线程不能被从缓存中,检查
Threads_cached
和Threads_created
状态变量。当线程堆栈太小,这限制了SQL语句的复杂性服务器可以处理,存储过程的递归深度和其他消耗内存的操作。设置一个堆栈的大小
N
字节为每个线程启动服务器thread_stack
设置为N
。
控制的最大数量的客户服务器允许同时连接,设置max_connections
系统变量在服务器启动或运行时。可能需要增加max_connections
如果更多的客户同时尝试连接服务器配置为处理(见部分B.3.2.5”,太多的连接”)。因为如果服务器拒绝连接max_connections
达到极限,它增加Connection_errors_max_connections
状态变量。
mysqld实际上允许max_connections
+ 1客户端连接。额外的连接被预留给账户的使用CONNECTION_ADMIN
特权(或弃用超级
特权)。通过授予特权管理员和不正常的用户(他们应该不需要它),管理员可以连接到服务器和使用显示PROCESSLIST
诊断问题即使贫穷的客户端连接的最大数量。看到部分13.7.7.29,“显示PROCESSLIST声明”。
MySQL 8.0.14,服务器还允许管理连接在一个管理网络接口,你可以使用一个专用的IP地址和端口设置。看到部分5.1.12.2,连接“行政管理”。
使用内部组复制插件与MySQL服务器会话执行的SQL API操作。在MySQL 8.0.18版本,这些会话数向指定的客户端连接限制max_connections
服务器系统变量。在这些版本中,如果服务器已经达到了max_connections
限制组复制时启动或试图执行一个操作,操作成功和组复制或服务器本身可能会停止。从MySQL 8.0.19,组复制的内部会议分开处理客户端连接,所以他们不计入max_connections
限制和不拒绝如果服务器已经达到这个极限。
客户端连接MySQL支持的最大数量(即最大值max_connections
可以设置)取决于几个因素:
线程库的质量在一个给定的平台。
可用的RAM数量。
RAM用于每个连接的数量。
工作负载从每个连接。
期望的响应时间。
可用文件描述符的数量。
Linux和Solaris应该能够支持至少500 - 1000并发连接经常和多达10000连接如果你有许多可用的字节的RAM和工作负载较低或响应时间要求不高的目标。
增加了max_connections
价值增加的文件描述符数量mysqld需要。如果无法获得所需数量的描述符,服务器可以减少的价值max_connections
。评论的文件描述符限制,请参阅部分8.4.3.1,“MySQL打开和关闭表”。
增加了open_files_limit
系统变量可能是必要的,这可能还需要提高操作系统限制有多少文件描述符可以使用MySQL。参考操作系统文档以确定是否有可能增加限制以及如何这样做。10bet官方网站另请参阅部分B.3.2.16”,文件未找到类似的错误”。