zoukankan      html  css  js  c++  java
  • swoole多进程处理产生的问题

    以前用swoole的时候,没有涉及到数据库连接,碰到问题没有那么多,后来公司业务原生来写swoole多进程,问题出现很多

    1.多进程之间会产生进程隔离,global无效,不能共用一个mysql,redis连接,所以每个进程单独开一个数据库连接

    2mysql数据库是多线程,每一个线程处理一个连接,当一个query连接超过mysql的max_timeout时,公司设置为20s,会回收,所以在swoole中,由于是一个长驻内存的服务,我们建立了一个mysql的连接,不主动关闭 或者是用pconnect的方式,那么这个mysql连接会一直保存着,然后长时间没有和数据库有交互,就主动被mysql server关闭了,之后继续用这个连接,就报mysql server gone away了

    解决方法:

    1修改mysql连接时间,但是设置太大的话,数据库产生大量sleep线程

    2增加断线重连的操作

    3减少僵尸进程出现

  • 相关阅读:
    web.xml配置文件
    数组去重问题
    Mysql优化
    点赞功能
    IDEA的一些使用小技巧
    Maven
    AJAX
    HTTP响应头拆分/CRLF注入详解
    对寄存器ESP和EBP的一些理解
    汇编调用指令的执行过程
  • 原文地址:https://www.cnblogs.com/matengfei123/p/8566598.html
Copyright © 2011-2022 走看看