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减少僵尸进程出现

  • 相关阅读:
    brctl 使用说明
    Flash文件系统介绍和平台采用squashfs+ubifs原因
    xargs
    svn的常用命令
    shell中的if用法
    shell中单双引号
    删除文件中的 ^M 字符
    博客园添加live2d看板娘
    IOS 自定义转场动画
    rails
  • 原文地址:https://www.cnblogs.com/matengfei123/p/8566598.html
Copyright © 2011-2022 走看看