Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nginx&;PHP-FPM 502网关错误_Php_Mongodb_Nginx - Fatal编程技术网

Nginx&;PHP-FPM 502网关错误

Nginx&;PHP-FPM 502网关错误,php,mongodb,nginx,Php,Mongodb,Nginx,让我先解释一下情况,我有一台64 GB RAM的服务器和20个40GB(SSD)内核的服务器。我有大约2000个并发用户 一周前,我在PHP7中使用apache,但cpu占80%,有时高达101%,这是因为从apache到Nginx、MySql到MongoDB之后,大量的sql插入。cpu约为8% 我现在的问题是Nginx多次返回502错误的网关响应,我寻找了一些答案,但没有任何帮助,但是当我将fpm套接字更改为portlisten=/var/run/php5 fpm.sock更改为listen

让我先解释一下情况,我有一台64 GB RAM的服务器和20个40GB(SSD)内核的服务器。我有大约2000个并发用户

一周前,我在PHP7中使用apache,但cpu占80%,有时高达101%,这是因为从apache到Nginx、MySql到MongoDB之后,大量的sql插入。cpu约为8%


我现在的问题是Nginx多次返回502错误的网关响应,我寻找了一些答案,但没有任何帮助,但是当我将fpm套接字更改为port
listen=/var/run/php5 fpm.sock
更改为
listen=127.0.0.1:9000
ngnix始终返回502,我不知道问题出在哪里。

这些更改将起作用:Nginx配置文件/etc/Nginx/Nginx.conf:在Nginx.conf文件的http部分下面添加

http

{

fastcgi_缓冲器8 16k

fastcgi_缓冲区大小32k

}


您的服务器的功能足够强大,每天可以处理50万个应用程序请求(如果编写得当的话)

问题是因为PHP-FPM不能有更多的子进程来服务更多的请求

在apache中,它会自动启动额外的apache进程

但是Nginx+PHP-FPM为您提供了处理这种情况的自由

只需更改fpm池配置:
/etc/php/php fpm.d/www.conf
(或任何您使用的)

确保它包含以下内容:

pm = static
pm.max_children = 4096
pm.process_idle_timeout = 10s
pm.max_requests = 32
然后重新启动php fpm

还要编辑
nginx.conf
,并确保其顶部有以下字段:

user http;
worker_processes  auto; 

events {
    worker_connections  4096;
    multi_accept on;
    use epoll; 
}


p、 s.不要将侦听属性更改为
ip:port
-套接字速度更快,因为在
ip:port
中,它通过ip和端口创建网络连接,但在套接字版本中,它只打开.sock“文件”。

p、 不要更改
fastcgi\u buffers
和etc指令,它不会修复坏网关问题,因为php fpm进程较少

在我的服务器中,默认设置为:

fastcgi_buffers 32 1024k;
fastcgi_buffer_size 1024k;

p、 s.禁用不必要的日志记录(nginx.conf)以避免磁盘驱动器具有更多IO负载:

access_log off;
error_log /var/log/nginx/error.log crit;

如果您需要监控,请使用
newrelic
并监控服务器的网络、cpu、mem活动

这是多么有用!很乐意帮忙(:实际上,它帮助我允许更多的并发请求..我将项目的特定部分从laravel转移到phalcon..现在它工作得非常好!phalcon是PHP框架的野兽。它在小数位上节省了我的CPU和MEM,所以服务器可以处理更多的请求。实际上,我必须说,我的答案不是专门用于优化他的应用程序速度。只有当其他子进程忙于执行某些任务时,它才有助于处理更多的请求。即使在phalcon的情况下,它也很有帮助。因为随着性能的提高,你会获得更多的用户,所以请求也在增加。