本文目录一览:
- 1、502 Bad Gateway 怎么解决
- 2、php_cgi进程并行处理问题
- 3、如何分析php-cgi进程占用cpu资源过多负载高的原因
- 4、服务器php-cgi.exe进程过多,导致CPU占用100%
- 5、php php-cgi.exe进程多
502 Bad Gateway 怎么解决
502badgateway要先找到nginx配置的路径。
然后找到nginx所在的error日志文件来查看具体原因。
如果是客户端浏览器配置的问题,以360浏览器为例,出现502BadGateway可能是设置了代代理导致的。
取消浏览器代理之后,刷新一下就可以访问了。
502BadGateway是一种报错提示,这一错误并不意味着上游服务器已关闭(无响应网关/代理),而是上游服务器和网关/代理不同意的协议交换数据。
鉴于互联网协议是相当清楚的,它往往意味着一个或两个机器已不正确或不完全编程。
php_cgi进程并行处理问题
php_cgi进程并行处理会引发消耗cpu过多导致机器负责过高的问题。
解决方法是做出以下调整:
1. nginx少开两个进程:
user nobody nobody;
worker_processes 2;
worker_rlimit_nofile 51200;
2.调整php_cgi的子进程数:
/usr/local/nginx/sbin/spawn-fcgi -a 127.0.0.1 -p 1026 -C 12 -u nobody -f /usr/local/php-fcgi/bin/php-cgi
/usr/local/nginx/sbin/spawn-fcgi -a 127.0.0.1 -p 1027 -C 12 -u nobody -f /usr/local/php-fcgi/bin/php-cg
3.重启php_cgi和nginx发现效果不佳。查资料发现有可能eAccelerater模块不兼容。
4.修改/usr/local/php-fcgi/lib/php.ini 禁止eaccelerator模块 改为apc加速:
extension = "apc.so"
apc.enabled = 1
apc.cache_by_default = on
apc.shm_segments = 1
apc.shm_size = 128M
apc.ttl = 7200
apc.user_ttl = 7200
apc.num_files_hint = 1024
apc.write_lock = On
apc.gc_ttl=3600
apc.ttl=0
apc.mmap_file_mask=/tmp/apc.XXXXXX
5.重启nginx和php_cgi即可。
如何分析php-cgi进程占用cpu资源过多负载高的原因
不要使用普通的CGI模式安装,每个PHP进程默认占128MB内存,几G内存也最多百来人访问就击垮了。
CGI模式是早期内部小网站的模式,现在一般用于开发时方便调试。
部署PHP应该使用FastCGI方式或者ISAPI方式安装,就不会产生多进程和资源占用过多。
服务器php-cgi.exe进程过多,导致CPU占用100%
你的现象一般有两种可能,一是PHP脚本问题,例如你在PHP脚本后面写一个按回车结束,然后从标准输入读数据,可能会造成阻塞,使得进程无法结束。进行测试的方法的是写一个最简单的PHP脚本(例如只有phpinfo();一行),然后不断用浏览器打开这个页面,如果CGI进程也在增加,那么说明是下面一种情况。
另外一种情况是PHP版本安装不对,在WINDOWS下用CGI方式工作,不要安装“线程安全”版本,应该安装“非线程安全”的版本,否则会出现你的情况。
php php-cgi.exe进程多
肯定是有的程序写得有问题,正常情况下如果有人用浏览器打开的你PHP网页,你就会开一个cgi进程,但是网页显示完毕cgi进程就应该关闭了,那么只要每个网页程序的效果很高(都在几毫秒执行完毕),那么几乎是看不见cgi进程的,哪怕有许多人不停的访问你的网页。
在cgi进程多的时候,在进程管理器里面设置显示“命令行”,看看是哪个页面的代码有问题,优化一下。