zoukankan      html  css  js  c++  java
  • PHP多进程引发的msyql连接数问题

    PHP多进程引发的msyql连接数问题

    业务中有一块采用了PHP的pcntl_fork多进程,希望能提高效率,但是在执行的时候数据库报错

    PDO::prepare(): Premature end of data (mysqlnd_wireprotocol.c:1244)
    Packets out of order. Expected 1 received 108. Packet size=7102829

    发现应该是短时间大量的链接写入数据库.导致数据库无法响应

    show variables like '%max_connections%';
    show variables like '%back_log%';

    修改my.ini 配置 back_log
    back_log = 104
    MySQL能有的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求,这就起作用,
    然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。
    如果期望在一个短时间内有很多连接,你需要增加它。也就是说,如果MySQL的连接数据达到max_connections时,新来的请求将会被存在堆栈中,
    以等待某一连接释放资源,该堆栈的数量即back_log,如果等待连接的数量超过back_log,将不被授予连接资源。
    另外,这值(back_log)限于您的操作系统对到来的TCP/IP连接的侦听队列的大小。
    你的操作系统在这个队列大小上有它自己的限制(可以检查你的OS文档找出这个变量的最大值),试图设定back_log高于你的操作系统的限制将是无效的。

  • 相关阅读:
    Linux下chkconfig命令详解
    几种主流的快照技术
    HANA内存数据库与oracle数据库的性能比较
    计算机网络知识汇总
    bzoj1211: [HNOI2004]树的计数 prufer序列裸题
    1003: [ZJOI2006]物流运输 最短路+dp
    HDU
    2243: [SDOI2011]染色 树链剖分+线段树染色
    bzoj1036: [ZJOI2008]树的统计Count 树链剖分
    bzoj1042: [HAOI2008]硬币购物 dp+容斥
  • 原文地址:https://www.cnblogs.com/hehexu/p/10159873.html
Copyright © 2011-2022 走看看