Nginx   发布时间:2022-05-11  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了tcp – nginx php5-fpm上游超时(110:连接超时),同时连接到上游大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我们有一个运行Nginx php5-fpm apc设置的web服务器.
然而,我们最近在页面呈现过程中遇到上游连接超时错误和减速.快速的php5-fpm重新启动解决了问题,但是找不到原因.

我们有另一个Web服务器在另一个子域下运行apache2,连接同一个数据库,执行完全相同的作业.但是,这种减速只发生在Nginx-fpm服务器上.
我认为php5-fpm或apc可能会导致问题.

日志告诉各种连接超时:

上游超时(110:连接超时),同时连接到上游bla bla bla

php5-fpm日志没有显示任何内容.只是孩子开始和完成:

Apr 07 22:37:27.562177 [NOTICE] [pool www] child 29122 started
Apr 07 22:41:47.962883 [NOTICE] [pool www] child 28346 exited with @R_830_6756@ after 2132.076556 seconds from start
Apr 07 22:41:47.963408 [NOTICE] [pool www] child 29172 started
Apr 07 22:43:57.235164 [NOTICE] [pool www] child 28372 exited with @R_830_6756@ after 2129.135717 seconds from start

服务器没有加载,当发生错误和加载平均只有2(2cpus 16cores),php5-fpm进程似乎工作正常.

Nginx conf:

user www-data;
worker_processes 14;
pid /var/run/Nginx.pid;
# set open fd limit to 30000
worker_rlimit_nofile 30000;

events {
        worker_connections 768;
        # multi_accept on;
}

http {

        ##
        # Basic SetTings
        ##

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # server_tokens off;

        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;

        include /etc/Nginx/mime.types;
        default_type application/octet-stream;

        ##
        # Logging SetTings
        ##

        access_log /var/log/Nginx/access.log;
        error_log /var/log/Nginx/error.log;

        ##
        # Gzip SetTings
        ##

        gzip on;
        gzip_disable "msie6";

        # gzip_vary on;
        # gzip_proxied any;
        # gzip_comp_level 6;
        # gzip_buffers 16 8k;
        # gzip_http_version 1.1;
        # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+RSS text/javascript;

        ##
        # Virtual Host Configs
        ##

        include /etc/Nginx/conf.d/*.conf;
        include /etc/Nginx/sites-enabled/*;
}

Nginx启用站点conf:

    LOCATIOn ~* \.php${
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass   BACkend;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILename  $document_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_param  QUERY_StriNG     $query_String;
        fastcgi_param  requEST_METHOD   $request_method;
        fastcgi_param  CONTENT_TYPE     $content_type;
        fastcgi_param  CONTENT_LENGTH   $content_length;
        fastcgi_intercept_errors        off;
        fastcgi_ignore_client_abort     off;
        fastcgi_connect_timeout 20;
        fastcgi_send_timeout 20;
        fastcgi_read_timeout 180;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 256k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
    }

## disable viewing .htaccess & .htpassword
    LOCATIOn ~ /\.ht {
        deny  all;
    }
}
upstream BACkend {
        server 127.0.0.1:9000;
}

fpm conf:

pm.max_children = 500
pm.start_servers = 100
pm.min_spare_servers = 50
pm.max_spare_servers = 100
pm.max_requests = 10000

fpm conf文件中有紧急重启设置.
我不知道他们是否帮助我们解决问题?

emergency_restart_interval = 0
最佳答案
首先,将php-FPM max_requests减少到100;您希望php线程重启的时间早于10000个请求.

其次,你只有一个php进程运行着很多孩子.这对于开发是很好的,但是在生产中,您希望拥有更多的php进程,每个都有较少的子代,所以如果这个过程由于任何原因而失败,那么其他的可以占用空闲.所以,你现在的比例不是1:50,而是比例为10:5.这将更加稳定.

为了实现这一点,你可能想看看像supervisor这样的一些东西来管理你的php进程.我们在生产中使用它,它确实有助于增加正常运行时间,减少管理/监控服务器的时间.以下是我们的配置示例:

/etc/php5/php-fpm.conf:

[global]
daemonize = no

[www]
listen = /tmp/php.socket

/etc/supervisor.d/php-fpm.conf:

[program:php]
user=root
command=/usr/sbin/php-fpm -c /etc/php5/php.ini -y /etc/php5/php-fpm.conf
numprocs=10
process_name=%(program_Name)s

/etc/Nginx/conf/php.BACkend:

upstream BACkend {
    server unix:/tmp/php.socket
}

编辑:

与所有服务器设置一样,不要依靠猜测来跟踪您的问题.我建议安装Munin以及各种php(-FPM)和Nginx插件;这些将帮助您跟踪有关请求,响应时间,内存使用情况,磁盘访问,线程/进程级别等方面的硬统计信息.

此外,正如我在下面的评论中所提到的,即使在适度的层面上,也可以将服务器端和客户端缓存都添加到设备中,无论是使用Nginx的本地缓存支持还是使用Nginx的本机缓存支持,都可以帮助用户提供更好的体验更具体的像varnishd.即使最动态的网站/应用程序也有许多静态元素,可以在内存和服务速度更快.从缓存服务这些可以帮助减少整体负载,并确保那些绝对需要动态的元素在需要时拥有所需的所有资源.

大佬总结

以上是大佬教程为你收集整理的tcp – nginx php5-fpm上游超时(110:连接超时),同时连接到上游全部内容,希望文章能够帮你解决tcp – nginx php5-fpm上游超时(110:连接超时),同时连接到上游所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: