Nginx wiki 对如何使用 php-fpm 和 fastcgi_caching 正确设置 nginx 的解释非常模糊,用于具有 cookie 的站点,即 wordpress、drupal、vbulletin 等。
我从http://vbtechsupport.com/796/下载了一个名为 centmin 的修改过的 nginx bash shell 安装脚本,同时它安装了 nginx v1.0.2、php 5.3.6 php-fpm、mariadb 5.2.6 mysql、memcached 1.4.5 服务器并通过shell脚本自动进行siege benchmark,它缺少设置fastcgi_caching以缓存php的配置参数。
它还缺乏为本地服务的文件缓存静态文件的设置。当静态文件驻留在同一磁盘上时,对它们使用 proxy_cache 有什么意义吗?
任何人都得到了一些提示和信息链接,以阅读有关正确设置 php (php-fpm) fastcgi_caching 以及缓存本地驻留静态文件的教程?
谢谢
我已经设置了php5-fpm绑定到/var/run/php5-fpm.
/etc/php5/fpm/pool.d/www.conf
listen = /var/run/php5-fpm/$pool.sock
Run Code Online (Sandbox Code Playgroud)
问题是它不会自动创建php5-fpm目录。当我重新启动机器时,目录消失了。
如何在启动时自动创建它?或者这个问题有其他解决方案吗?
我一直在尝试在我的 OSX 10.7 Lion 计算机上启动并运行 NGINX。我让它运行但是简单的 html 页面每隔几个都需要很长时间才能加载;例如:
<html>
<body>
test
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
php 也会发生同样的事情:
<?php
echo('hi');
?>
Run Code Online (Sandbox Code Playgroud)
如果我点击刷新,它似乎几乎在渲染和创建某种对象之前重建整个页面。只是痛苦地缓慢..
如果我进行一些编码然后返回刷新页面,这似乎是最常见的。(10-20+ 秒然后返回并刷新页面需要 4-6 秒)。似乎一旦空闲,它需要一段时间才能重新唤醒。
我正在拔头发试图了解发生了什么,希望有人可以为我阐明这一点。
系统配置:
操作系统:OSX 10.7.2
处理器:2 x 2.66 GHZ 双核 Intel Xeon
内存:8GB 667 MHz
Nginx 版本:1.0.11
PHP 版本:5.3.9
我已经从一个干净的 OSX 格式安装了这个(我认为最初是我的错误,遗憾的是它不是)。
更新
根据 Fox 在评论中的建议更新我的 error_log 文件以包含调试后,我现在看到以下消息出现在我的 error_log 中:
2012/01/23 11:57:02 [info] 88015#0: *26 client closed prematurely connection
while reading client request line, client: 127.0.0.1, server: sandbox.local
Run Code Online (Sandbox Code Playgroud)
更新二
在使用 chrome 检查时,我确实发现 DNS 解析似乎需要一些时间?

更新三 - 已解决
更新后使用两个固定的 …
当大约 +10K 连接(netstat -an |grep 80 |wc -l)时,我经常在随机页面上收到此错误。当仍有 +10GB 的可用内存且服务器负载小于 3 时,就会发生这种情况。
我的相关配置:
/etc/php5/fpm/php.ini
memory_limit = 1024M
default_socket_timeout = 120
Run Code Online (Sandbox Code Playgroud)
/etc/php5/fpm/pool.d/www.conf
pm = dynamic
pm.max_children = 30
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 5
;pm.max_requests =20000 #uncommented with any value didn't fixed
request_terminate_timeout = 120s
Run Code Online (Sandbox Code Playgroud)
我还将上述 vlues(即 60 个孩子,10 个开始,10 个最大服务器)加倍,但无济于事。
/etc/nginx/nginx.conf
worker_connections 4024;
keepalive_timeout 10;
Run Code Online (Sandbox Code Playgroud)
Nginx 本身在 Varnish 和 memcached 后面是启用的。页面渲染通常非常快。
这似乎是一个很常见的问题,我找不到任何有用的解决方案,甚至无法分析可能的原因。因此,非常感谢您的提示/解决方案。
我们在Red Hat Linux 6 (RHEL)上使用 nginx 和 php-fpm 设置了 Web 服务器。这台机器已经安装了 WordPress,并且运行良好。我们已将 WordPress 设置为转到wptest.domain.local。然后,我们在启用了站点的名为servername.domain.local 的站点中创建了一个新站点,我们希望在其中托管各种工具。
PHP 始终运行良好,我们对 WordPress 没有任何问题。但是当尝试访问 phpMyAdmin 时,我们收到此错误:
2012/09/14 16:22:13 [error] 10065#0: *1 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 192.168.1.15, server: servername, request: "GET /phpmyadmin/setup/ HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "servername"
这是我们网站的配置:
server_name servername severname.domain.local;
access_log /srv/www/severname/logs/access.log;
error_log /srv/www/severname/logs/error.log;
root /srv/www/severname/public_html;
地点 / {
index index.html index.htm index.php;
try_files $uri $uri//index.php?q=$uri&$args;
}
位置 = /favicon.ico … 我最近将一个客户端迁移到运行 Nginx + PHP-FPM 的 EC2 实例。当我第一次设置服务器时,我设置pm=static了 40 个工作进程。一周左右后,我决定尝试pm=dynamic最多 200 名工人和最少 30 名工人。
我注意到在静态设置下,40 个进程占用了大约 2.3GB 的内存,而在动态设置下,我看到 60 个进程仅使用 1.2GB 内存的峰值。
请参阅下面来自 New Relic 的图表,我的注释为红色。

可以看到,在 11/25 白天,我从静态更改为动态并重新启动了 php-fpm。之后我们可以看到48个进程只占用了990MB,60个进程只占用了1.2GB内存。
什么可能导致静态和动态管理之间的这种差异?难道是动态的,我将最大请求数设置为 50?也许静态内存使用更多是由于内存泄漏而不是 php-fpm 的内部问题?
启动 php5-fpm 似乎可以工作,但立即检查状态显示它没有运行:
[root@server ~]# service php5-fpm start
php5-fpm start/running, process 4516
[root@server ~]# service php5-fpm status
php5-fpm stop/waiting
Run Code Online (Sandbox Code Playgroud)
即使我能够加载 PHP 页面(意味着 PHP-FPM 必须正在运行),状态有时也会报告为stop/waiting.
看来,有有正在运行的进程,但这些只是工作进程?
ps -aux |grep php
www-data 3552 0.0 0.7 338108 14960 ? S 05:43 0:00 php-fpm: pool www
www-data 3553 0.0 1.3 338168 27156 ? S 05:43 0:00 php-fpm: pool www
www-data 3554 0.0 1.1 337948 23020 ? S 05:43 0:00 php-fpm: pool www
www-data 3555 0.0 1.0 334108 20644 ? S …Run Code Online (Sandbox Code Playgroud) 我正在尝试设置 php-fpm 的多个实例,以通过在 centos 6.5 上运行的 apache 2.2 运行多个版本的 php。
在未来的某个时候,这将最终出现在共享托管环境中,因此我需要尽可能严格的安全性。
因此,我试图避免完全禁用 selinux,并尝试将策略设置得尽可能窄。
我对 selinux 比较陌生(我们现有的服务器只是将其禁用)。我已经对这个主题进行了大量阅读,但逻辑仍然无法理解(正如我确定这个问题所显示的那样)。
调用 php-script apache 时会产生此错误:
[Sun May 18 10:46:17 2014] [error] [client 192.168.163.1] (13)Permission denied: FastCGI: failed to connect to server "/fcgi-bin-php5-fpm-i10000_test-1.testtest.org": connect() failed
[Sun May 18 10:46:17 2014] [error] [client 192.168.163.1] FastCGI: incomplete headers (0 bytes) received from server "/fcgi-bin-php5-fpm-i10000_test-1.testtest.org"
Run Code Online (Sandbox Code Playgroud)
包含 php-fpm 套接字的目录如下所示:
drwxr-xr-x. root root system_u:object_r:var_run_t:s0 .
drwxr-xr-x. root root system_u:object_r:var_run_t:s0 ..
srw-------. apache apache unconfined_u:object_r:var_run_t:s0 apache_default.sock
srw-------. apache apache unconfined_u:object_r:var_run_t:s0 i10000_test-1.testtest.org.sock
srw-------. …Run Code Online (Sandbox Code Playgroud) 我最近按照以下说明在我的服务器上安装了 php-fpm(CENTOS 6.5 x86_64 标准,WHM 11.44.1(build 7)):http : //infoliser.com/how-to-configure-apache-2-2-with -php-fpm-using-whm-cpanel-and-easyapache/
服务器 API,正如所揭示的 phpinfo(),现在是 FPM/FastCGI。
但是,当我运行包含 的 php 脚本时exec('id'),我得到:
uid=99(nobody) gid=99(nobody) groups=99(nobody)
我的印象是 php-fpm 将作为 php 脚本所有者的 uid 运行,而不是作为 http 进程的所有者(如本例)。这个页面http://php-fpm.org/说 fpm 具有“能够以不同的 uid/gid/chroot/environment 和不同的 php.ini(替换 safe_mode)启动工人”。
我究竟做错了什么?
我尝试了各种选择,但每隔几天(主要是每天)FPM 就会停止提供页面,并且我收到 502(来自 cherokee 网络服务器)
日志中填充了以下内容:
[15-Sep-2014 10:17:46] WARNING: [pool www] child 10135 exited on signal 11 (SIGSEGV - core dumped) after 15.512406 seconds from start
[15-Sep-2014 10:17:46] NOTICE: [pool www] child 10138 started
[15-Sep-2014 10:18:02] WARNING: [pool www] child 10138 exited on signal 11 (SIGSEGV - core dumped) after 15.657950 seconds from start
[15-Sep-2014 10:18:02] NOTICE: [pool www] child 10166 started
[15-Sep-2014 10:18:20] WARNING: [pool www] child 10212 exited on signal 11 (SIGSEGV - core dumped) after 10.192596 seconds …Run Code Online (Sandbox Code Playgroud)