包含标签:线程池 的文章
  • MySQL中间件之ProxySQL(5):线程、线程池、连接池

    1.ProxySQL的线程 ProxySQL由多个模块组成,是一个多线程的daemon类程序。每个模块都有一个或多个线程去执行任务。 例如,以下是刚启动ProxySQL时的进程情况,一个main进程,一个主线程,21个线程。 [root@s1 ~]# pstree | grep proxy |-proxysql---proxysql---21*[{proxysql}] 下面是正常运行时使用的线程列表: 1.1 Main thread 这其实是一个进程,该进程只负责引导、启动核心模块以及启动其它核心线程。 1.2 Admin thread 该线程负责以下几件事: 初始化并引导启动Admin接口。 从磁盘数据库或配置文件中加载配置,为ProxySQL的运行提供环境。 启动一个监听者,让其负责监听并接受到Admin接口的新连接,并为每个这样的连接创建一个新线程。 所以,每连接一次admin接口,就会新生成一个线程。每次退出admin接口时,减去一个线程。 1.3 MySQL workers mysql-threads线程负责处理MySQL流量,包括所有来自客户端的连接以及所有到后端服务器节点的连接。也就是:用少量线程处理任意多数量的连接。 MySQL workers线程在相同的端口上进行监听。当新客户端发起连接请求,其中一个MySQL worker线程将成功接受该连接,并创建一个MySQL会话(session):客户端和会话绑定在该worker线程上,直到连接断开。换句话说,在断开连接之前,某客户端的所有连接总是被同一个worker线程处理。 默认情况下,MySQL worker的线程数量为4。 mysql> select @@mysql-threads; +-----------------+ | @@mysql-threads | +-----------------+ | 4 | +-----------------+ mysql-threads变量修改后,必须重启ProxySQL才能生效,这是少有的需要重启的变量之一(另一个是mysql-stacksize)。例如,修改为8个mysql worker线程。 set mysql-threads=8; save mysql variables to disk; select * from ru……

    SE_You 2024-03-19
    32 0 0