gpt4 book ai didi

php - 优化 Nginx + PHP-FPM 以获得更快的响应时间(用于 Openx 广告服务)

转载 作者:IT王子 更新时间:2023-10-28 23:50:33 27 4
gpt4 key购买 nike

我目前正在运行 Nginx + PHP-FPM 以在 OpenX 上转换广告。目前我的响应时间很糟糕,即使在低负载时也是如此。但是,我的 CPU 和内存资源都很好,所以我似乎无法弄清楚瓶颈是什么。

我当前的 nginx 和 php-fpm 配置是:

worker_processes 20;
worker_rlimit_nofile 50000;

error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
worker_connections 15000;
multi_accept off;
use epoll;
}

http {
include /etc/nginx/mime.types;

access_log /var/log/nginx/access.log;

sendfile on;
tcp_nopush off;

keepalive_timeout 0;
#keepalive_timeout 65;
tcp_nodelay on;

gzip on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
gzip_comp_level 2;
gzip_proxied any;
gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

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

server {
listen 80;
server_name localhost;
access_log /var/log/nginx/localhost.access.log;

# Default location
location / {
root /var/www;
index index.php;
}

## Parse all .php file in the /var/www directory
location ~ .php$ {
fastcgi_pass localhost:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www$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_ignore_client_abort off;
}

PHP-FPM:
rlimit_files = 50000
max_children = 500

我只包含了我为 PHP-FPM 更改的 PHP-FPM 参数。

有没有人对我如何优化它有任何提示,以便我可以处理更多请求?我现在看到了可怕的响应时间。

最佳答案

首先, worker 太多,限制设置过高。仅 php-fpm 的最大工作人员数量就会使您的服务器陷入困境。取消对服务器的限制不一定会加快速度,但实际上可能会产生相反的效果。

  1. worker 数:如果您没有 20 个处理器/内核的机器,那么 20 毫无意义,您实际上会造成负面影响,因为 worker 将进行过多的内容交换。如果您运行的是双核处理器,那么 2 个工作人员就足够了。

  2. Worker Connections:再说一次,只是给天堂设置一个限制并不能解决您的问题。如果您的 ulimit -n 输出类似于 1024,那么您的 worker 连接需要设置为 1024 或更少(甚至可能是 768),您不太可能同时连接 2 x 1024,尤其是对于 PHP 之类的东西。

  3. 根位置和 PHP 设置,请参阅 http://wiki.nginx.org/Pitfalls , 如果将根指令放在服务器 {} 级别而不是位置级别,效果最佳。完成后,您可以使用 $document_root$fastcgi_script_name 作为 SCRIPT_FILENAME 值,因为 $document_root 将自动传播到其下方的位置 block 。

  4. 您可能希望直接处理静态文件,换句话说:

    location ~* \.(ico|css|js|gif|jpe?g|png)$ {
    expires max;
    add_header Pragma public;
    add_header Cache-Control "public, must-revalidate, proxy-revalidate";
    }
  5. 使用 PHP 加速器,即 APC(在 php.ini 中设置 apc.enabled=1)或 XCache,并注意您的 php 设置,例如 memory_limit。例如,如果您的系统只有 2GB 内存,那么允许 500 个 worker 每个 128MB 的限制是没有意义的。如果您还在服务器上运行其他服务,则尤其如此。

关于php - 优化 Nginx + PHP-FPM 以获得更快的响应时间(用于 Openx 广告服务),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2271670/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com