zoukankan      html  css  js  c++  java
  • php-fpm设置与 phpMyadmin超时 操作SQL超时

    LNMP 一键安装包环境:

    Phpmyadmin   登录超时 (1440 秒未活动),请重新登录。

    vim /usr/local/php/etc/php.ini    

    session.gc_maxlifetime = 3600

    vim /home/wwwroot/default/phpmyadmin/libraries/config.default.php

    $cfg['LoginCookieValidity'] = 3600;

    phpmyadmin 执行mysql操作的时候 超时:

    vim  /usr/local/nginx/conf/nginx.conf     

            fastcgi_connect_timeout 300;     // 时间改为  600
            fastcgi_send_timeout 300;        // 时间改为 600
            fastcgi_read_timeout 300;        // 时间改为  600
            fastcgi_buffer_size 64k;
            fastcgi_buffers 4 64k;
            fastcgi_busy_buffers_size 128k;
            fastcgi_temp_file_write_size 256k;

    调高上面标红的3个值后,主要是read和send两项(默认Nginx超时为300),完美地解决了504错误
    并且可以配置在http,server级别,也可以配置在location级别。
    factcgi_connect_{read|send|timeout}是对fastcgi_pass生效   ; proxy_connect_{read|send|timeout}是对proxy_pass生效

    执行 myphpadmin 的SQL操作时出现 502 错误 

    查看php-fpm的日志: tail /usr/local/php/var/log/php-fpm.log

    [29-Sep-2016 17:32:58] WARNING: [pool www] child 21887, script '/home/wwwroot/default/phpmyadmin/sql.php' (request: "GET /phpmyadmin/sql.php") execution timed out (125.496217 sec), terminating
    [29-Sep-2016 17:32:58] WARNING: [pool www] child 21887 exited on signal 15 (SIGTERM) after 87935.416668 seconds from start
    [29-Sep-2016 17:32:58] NOTICE: [pool www] child 32379 started

    vim  /usr/local/php/etc/php-fpm.conf

    pm = dynamic         // 
    pm.max_children = 80         //重要参数:一个进程起始为 3M 处理一段时间后大概20-30M  根据自己的配置设,内存要留一半给MYSQL
    pm.start_servers = 40
    pm.min_spare_servers = 40
    pm.max_spare_servers = 80
    request_terminate_timeout = 100   // 0为不限制,我改为0s
    request_slowlog_timeout = 0
    slowlog = var/log/slow.log

    如果设置成static,进程数自始至终都是pm.max_children指定的数量,pm.start_servers,pm.min_spare_servers,pm.max_spare_servers配置将没有作用。如果设置成dynamic,则进程数是动态的,最开始是pm.start_servers指定的数量,如果请求较多,则会自动增加,但不超过 pm.max_children指定的数量,同时保证空闲的进程数不小于pm.min_spare_servers,如果进程数较多,也会进行相应清理, 保证多余的进程数不多于pm.max_spare_servers。当php-fpm启动后,一个php-cgi进程约战3M内存,但是当它们处理过一些请求后,有些内存是释放不掉的,占用的内存能达到20M-30M不等。

    内存较大时 可以设成静态, php-fpm不用反复创建进程。 也有人说性能较高 可以设成动态 ,性能低分配控制固定进程。

    删除索引大概用了 5分钟  修改过上面两个参数后就没出错了。 估计是 request_terminate_timeout 是这个产生影响


    vim /home/wwwroot/www/etc/amh-php.ini

    vim /home/wwwroot/www/php-fpm/huitiao.conf  

     AMH里的amh-php.ini 里的 max_execution_time 是:  max_execution_time = 20    我改成了 600  。

    但是  如果在php-fpm.conf 设置了 request_terminate_timeout  则以 request_terminate_timeout 为准 ,因为它优先级高。

    解决办法

    php.ini中的max_execution_time值 php-fpm.conf中的request_terminate_timeout值 
    这两项都是用来配置PHP脚本的最大执行时间。超时时php-fpm会终止脚本的执行,同时还会终止执行脚本的Worker进程。 如上,php-fpm child 18822被terminate后重新生成了新的Worker进程19164,所以nginx发现与自己通信的连接断了,就自然会返回502错误给客户端。客户端需再次发起请求重新建立新的连接,表象是刷新下浏览器即重新发起请求

    所以只需将这两项的值适当调大,让PHP脚本不会因为执行时间长而被终止从而与nginx激活连接丢失。

    request_terminate_timeout优先级高于max_execution_time,不想改全局的php.ini,只改php-fpm的配置就可以了。这里暂且调到600秒

    request_terminate_timeout = 600

    补充: nginx也要注意upstream模块中max_fail和fail_timeout。有时nginx与后端服务器(Tomcat、FastCGI)的通信只是偶然断掉,但max_fail设置太小,那么在接下来的fail_timeout时间内,nginx都会认为后端服务器无响应,都会返回502错误。 所以可以将max_fail调大一些,将fail_timeout调小一些

    坑爹的 AMH的配置文件在这里:

    /usr/local/nginx-generic-1.6/conf/nginx.conf

    /home/wwwroot/web环境名称/php-fpm/域名目录.conf  

    /home/wwwroot/web环境名称/etc/amh-php.ini

    vim /usr/local/mysql-generic-5.5/my.cnf

    web 是 AMH下的环境名称,里面可以有多个虚拟主机

    教程来源:

    http://www.2cto.com/os/201301/184035.html

    http://ju.outofmemory.cn/entry/251073

  • 相关阅读:
    第七次作业
    C语言总结(3)
    C语言总结(1)
    C语言总结(2)
    别人的经验
    代理模式(静态代理和动态代理)
    C++的反射
    Coretext实现图文混排及Gif图片播放
    IOS 中openGL使用教程1(openGL ES 入门篇 | 搭建openGL环境)
    IOS 中openGL使用教程2(openGL ES 入门篇 | 绘制一个多边形)
  • 原文地址:https://www.cnblogs.com/carbon3/p/5921027.html
Copyright © 2011-2022 走看看