优化 Nginx + PHP-FPM 为了更快的响应时间 /为了 adserving Openx/

我目前正在跑步 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


我只打开了Paramaters PHP-FPM, 我改变了 PHP-FPM.

有没有人有关于如何优化他的建议,以便我可以提供更多的要求? 现在我看到了一个可怕的响应时间。
已邀请:

卫东

赞同来自:

首先,工人太多,限制过高。 最大数量的工人 php-fpm 本身,制动服务器将非常高。 删除服务器的限制不一定加快其工作,但它可能实际上可能相反。

工人人数: 20 如果你没有,它几乎没有意义 20 处理器/机芯,你实际上称之为负面影响,因为工人将有过度的内容更换。 如果您使用双核处理器,那么 2 工人应该足够了。

工程文:再次,只是向天堂扔掉极限,你不解决你的问题。 如果你的输出 ulimit-n 做出一些类似的东西 1024, 然后必须安装您的工作连接 1024 或更少 /也许偶数 768/, 你不太可能有 2 x 1024 同时化合物,尤其是像这样的东西 PHP.

根位置和设置 PHP 见B.
http://wiki.nginx.org/Pitfalls
, 如果您将root指令放在服务器级别上,最好工作 {}, 而不是位置级别。 一旦你这样做,你可以使用 $document_root$fastcgi_script_name 作为价值 SCRIPT_FILENAME, 因为 $document_root 它将自动分发到它下面的位置块。

换句话说,您可以直接处理静态文件:


location ~* \./ico|css|js|gif|jpe?g|png/$ {
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}


使用加速器 PHP, 即 APC /从 apc.enabled=1 在 php.ini/ 或者 XCache, 并记住你的设置 php, 如 memory_limit. 例如,如果您只有一个系统 2 GB的RAM,然后很少含义来解决 500 有限制的工人 128 每个人。 如果您还使用服务器上的其他服务,则尤其如此。

诸葛浮云

赞同来自:

投入也很有用:


access_log off;


正如我想你真的不关心那些要求的生成杂志。

三叔

赞同来自:

你绝对必须减少工人的数量,因为我怀疑你有 20 cores/processors.
另外,我会查看您的数据库服务器,问题在于存在很高的概率。

此外,您还增加了
worker_rlimit_nofile


50000

, 我希望你知道操作系统通常会设置限制 1024 /默认/, 您可以尝试通过键入来请求当前限制
ulimit -n


你可以筹集硬限制 NOFILE /打开文件的数量/, 通过完成此命令
ulimit -n 50000

在 init.d 或者
https://coderoad.ru/2694004/
, 学习如何使用
limits.conf

持续安装在整个系统的规模上的限制。

龙天

赞同来自:

真的带来了更大的生产力 nginx PHP5-FPM是一整套艺术。 为此,您需要真正了解您服务的内容。

例如,我没有看到任何用途 try_files 或配置中的任何缓存。 你知道吗 nginx 附带内置支持 memcache? 您可以缓存图像和 html/css,, 和 php 页面。 如果您主要关心点击,即使没有考虑显示,仍然会考虑这些点击。

将横幅放在文件系统中 tmpfs mount, 不是日志 access_log 或全局级别,禁用您不需要的模块 php, 使用最新版本 mysql, 使用 InnoDB, 减少表锁,用坦克方法玩 InnoDB, 要将记录减少到磁盘,请增加表中的最大内存 mysql, 加入后,减少磁盘上的临时文件的创建 SQL 等等。

Nginx - 这只是一个非常大而复杂的公式的一部分。 我甚至没有提到 Kernel 参数优化堆栈性能 TCP 和网卡,使用交换,内存或压缩使用 gzip HTML/CSS, 你可以通过它提供 OpenX /如果是真的/.

是的,就像上面提到的其他人一样,您的设置看起来过度,并展示对优化基本概念缺乏了解。 换句话说,雇用了专业 :-/

二哥

赞同来自:

你有 20 你车上的处理器或核心? 此外,也许,尝试使用默认值的事件 OS... 也许更多的过程 fcgi 而不是更多 nginx... 可能足以开始 2-4 nginx 工作人员 ...

石油百科

赞同来自:

绝对是,人们已经提到过太多工人。 就个人而言,我更喜欢 xcache 反而 APC 用于缓存代码操作 php. 您必须在修改后检查配置 centmin auto bash shell nginx/php-fpm install script
http://vbtechsupport.com/796/
/

快网

赞同来自:

使服务器系统的最有效方式更快 - 它被使用了 Facebook HipHop Virtual Machine /HHVM/ 反而 PHP /PHP 不再需要安装/.

HHVM 在上游使用 CPU a "Just in Time Compiler" 并且通常执行代码 PHP 在 5-10 比自己快 PHP, 这允许您与较少数量的服务器或更小的服务器相处,并显着降低功耗。 使用维基百科使用 HHVM 减少服务器上的负载 CPU 在 5 时间:
http://www.golem.de/news/php-f ... .html
它可以随包安装。 Nginx as Linux 并包括在 Nginx 非常简单 FastCGI, 几分钟后不久,它可以通过小文件进行测试 "Hello World" PHP:
https://github.com/facebook/hh ... arted
新的 PHP7 PHPNG 应该是真理,根据基准测试,只有 30% 快点。

谢谢你保持投票

要回复问题请先登录注册