访问php页面提示An Error Occurred的解决办法

今天帮一个朋友解决php页面出现的"An Error Occurred"的错误,返回http的502错误。这里第一反映就是php-fpm.conf配置问题。目前只有这一个网站的,肯定是php这一块出问题了,而php-fpm.conf文件是没有动过的。只有检查php-fpm和nginx.conf的配置了,基本上没有发现什么不当的现象。无意中发现一个nginx和php配置不一致的地方,那就是php-fpm.conf文件里配置的通讯方式为

<value name="listen_address">/tmp/php-cgi.sock</value>

而在nginx.conf里配置的是

fastcgi_pass  127.0.0.1:9000

两者不一致,所以导致了502错误,这里将nginx.conf文件里的配置修改成

# fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/tmp/php-cgi.sock;

重启nginx即可解决502错误。

善用 PHP-FPM 的 slow log 分析问题

节前公司站点出现了莫名的 502 错误,在服务器配置上拆腾未果,重新开始怀疑程序问题。

关于 502 错误,具体可以参考以下两篇文章:
《自动检测 PHP-FPM 的错误并重启的 PHP 脚本》
《NGINX + PHP-FPM 502 相关事》

根据错误提示(11: Resource temporarily unavailable) ,排除掉服务器配置的问题,自然而然就怀疑是资源被程序占用光了。

这些资源包括数据库连接、文件数、锁等等,如果一个个去猜解调试甚至是走读代码,未免太费时间,也未必能发现问题所在。

好在 PHP-FPM 提供了慢执行日志,可以将执行比较慢的脚本的调用过程 dump 到日志中。 Continue reading

php-fpm日志里出现[WARNING] fpm_children_bury()信息的解决办法

最近接手nginx+php的WEB环境维护,发现PHP-cgiCPU很好,也造成负载很高,于是在网上找了些资料,并且针对自己的错误,将问题收集再次,并且网上还给了解决方案,所以放在这里留作以后查询

an 11 08:54:01.164292 [NOTICE] fpm_children_make(), line 352: child 10088 (pool default) started
Jan 11 08:54:01.164325 [WARNING] fpm_children_bury(), line 215: child 7985 (pool default) exited on signal 15 SIGTERM after 63.778601 seconds from start
Jan 11 08:54:01.165485 [NOTICE] fpm_children_make(), line 352: child 10089 (pool default) started
Jan 11 08:54:01.165514 [WARNING] fpm_children_bury(), line 215: child 7999 (pool default) exited on signal 15 SIGTERM after 60.297326 seconds from start
Jan 11 08:54:01.166696 [NOTICE] fpm_children_make(), line 352: child 10090 (pool default) started
Jan 11 08:54:01.166727 [WARNING] fpm_children_bury(), line 215: child 8000 (pool default) exited on signal 15 SIGTERM after 60.296946 seconds from start
Jan 11 08:54:01.167855 [NOTICE] fpm_children_make(), line 352: child 10091 (pool default) started

以上是php日志的警告信息 Continue reading

PHP-FPM高负载的解决办法

这里只是介绍了php-fpm的优化方法的,但一般情况下和nginx组合使用的时候,单独优化其中一项的话,作用不是特别的大,同时还需要对nginx进行优化.nginx的做法方法参考:http://blog.haohtml.com/archives/6213.上面的优化前和优化后的图,看得出前后差距还是特别的大的.

导致nginx 502 bad gateway的PHP-CGI(FASTCGI)

NGINX频爆502 BAD GATEWAY的错误,看了网上的教程,仍没有彻底解决。

目前我总结的解决502 BAD GATEWAY的方式有:

1.视服务器的性能,在php-fmp.conf里增加max_children的值,我目前用的15.

2.用reload参数定时重载php-fpm。这个主要原因是php脚本执行时间过长造成的,重载php-fpm能杜绝这个问题。如何彻底解决php-cgi脚本占用大量内存从而导致502错误的产生还值得进一步探讨,目前该做法不失为一种好办法。
Continue reading

php-fpm文档中文翻译[转]

原文链接:http://php-fpm.anight.org/
wiki:http://www.php-fpm.com/

什么是 FastCGI

FastCGI 是一个可伸缩、高速的在web server和脚本语言间通迅的接口。关于FastCGI技术的更多信息可以在官方网站Wikipedia看到。

FastCGI 被许多脚本语言所支持,包括 php,如果用 --enable-fastcgi 选项编译的话。

多数流行的web server都支持 FastCGI。包括Apache(mod_fastcgi和mod_fcgid),Zeusnginxlighttpd

FastCGI 的主要优点是把动态语言和 web server 分离开来。这种技术允许 web server 和动态语言运行在不同的主机上。这可以改进可扩展性和安全性而没有大的效率损失。

php-fpm 可以和任何支持外部 FastCGI 技术的 web server 一起使用。 Continue reading

nginx下关于PHP-FPM在高负载下的优化配置

今天调整了服务器的PHP-FPM配置,其中有几个参数可以在网站在高并发下,保持服务器的稳定.不会挂掉.请看下面的内容.

代码:
       
        <value name="max_children">5</value>

        Settings group for 'apache-like' pm style
        <value name="apache_like">

          Sets the number of server processes created on startup.
          Used only when 'apache-like' pm_style is selected
          <value name="StartServers">20</value>

          Sets the desired minimum number of idle server processes.
          Used only when 'apache-like' pm_style is selected
          <value name="MinSpareServers">5</value>

          Sets the desired maximum number of idle server processes.
          Used only when 'apache-like' pm_style is selected
          <value name="MaxSpareServers">35</value>  

<value name="rlimit_files">65535</value>

<value name="max_requests">1024</value> Continue reading 

在CentOS 5 VPS上编译带php-fpm功能的php

本文记录了在CentOS 5 VPS上编译打了php-fpm补丁的php 5.2.10的过程。

安装库文件

安装编译php需要的一些库文件

yum install libxml2-devel libmcrypt-devel openssl-devel curl-devel libjpeg-devel  libpng-devel freetype-devel openldap-devel libmhash-devel mysql-devel  libtool-ltdl-devel

如果是64位的系统,然后需要调整一下mysql的库文件,否则在64位系统下老去找32位的mysql库:

cd /usr/lib
mv mysql mysql.i386
ln -sf /usr/lib64/mysql mysql

编译php-fpm

给php打php-fpm补丁: Continue reading

nginx下php-fpm详解

php-fpm详解

原文链接:http://php-fpm.anight.org/
wiki:http://www.php-fpm.com/
翻译:http://syre.blogbus.com/logs/20092011.html

什么是 FastCGI

FastCGI 是一个可伸缩、高速的在web server和脚本语言间通迅的接口。关于FastCGI技术的更多信息可以在官方网站Wikipedia看到。

FastCGI 被许多脚本语言所支持,包括 php,如果用 --enable-fastcgi 选项编译的话。

多数流行的web server都支持 FastCGI。包括Apache(mod_fastcgi和mod_fcgid),ZeusnginxlighttpdContinue reading

nginx php-fpm性能优化设置

When you running a highload website with PHP-FPM via FastCGI, the following tips may be useful to you : )
如果您高负载网站使用PHP-FPM管 理FastCGI,这些技巧也许对您有用:)
1. Compile PHP’s modules as less as possible, the simple the best (fast);
1.尽量少安装PHP模块,最简单是最好(快)的
2. Increas PHP FastCGI child number to 100 and even more. Sometime, 200 is OK! ( On 4GB memory server);
2.把您的PHP FastCGI子进程数调到100或以上,在4G内存的服务器上200就可以 Continue reading

再次优化NGINX+php-fpm上传

上次写了一篇nginx+php-fpm优化上传,一位博友留言介绍了,第三方nginx upload module

http://www.grid.net.ru/nginx/upload.en.html

看了一下,功能蛮强大的,所以就记录下来·基本没什么变化,在原有的例子上稍加了下修改,加了一个限速功能。在 0.8.X 版本上编译出出错,他官方也有写:

For nginx versions other than 0.7.44-51

但是我在最新版本 nginx-0.7.67.tar.gz 编译也没问题。 下载nginx:wget http://www.nginx.org/download/nginx-0.7.67.tar.gz 下载模块:wget http://www.grid.net.ru/nginx/download/nginx_upload_module-2.0.12.tar.gz 1.下载编译安装nginx_upload_module Continue reading