统信UOS服务器+Nginx+PHP7+瀚高数据
已经安装pdo_pgsql 和 pgsql拓展
只要数据库的ip和端口填写正确就报502错误,看起来像是Nginx无法处理php链接数据库后返回的结果,个人感觉是php的拓展问题,也可能是不兼容统信服务器。
数据库没有问题,用工具和命令都可以正常链接
有没有人遇到过类似问题,可以告诉我解决思路或者方法,如果能远程操作更好
你把这个去掉再试一下
或者又可能是 php-fpm的问题,需要从配置文件下手看看
[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
log_level = notice
[www]
listen = /tmp/php-cgi.sock
user = www
group = www
pm = dynamic
pm.max_children = 20
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 6
request_terminate_timeout = 100
看一下listen这个配置 /tmp/php-cgi.sock 文件,看一下文件权限,另外你的nginx和php-fpm进程是以什么用户权限运行的?
需要通过 ps -aux|grep php 看下 php-fpm进程的属主。
如果是这个问题就需要查php-fpm的配置,需要看下 listen.ower listen.group 设置。
看是否有必要加下这两个配置:
listen.owner = “和你的user一样”
listen.group = “和你的user一样”
先抓取一下报错信息看看
try{
$db = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
echo 'Connected';
}catch(PDOException $e){
print $e->getMessage();
echo "No Connection";
}
有个重要的细节,你要访问的数据的数据量多大,我看你的代码是想一下把数据全部读取出来。
有以下几个你特别需要关注一下,因为不知道你访问的数据量有多大
1、调高进程数
使用 netstat -napo |grep "php-fpm" | wc -l 查看一下当前 fastcgi 进程个数,如果个数接近 conf 里配置的上限,就需要调高进程数。
但也不能无休止调高,可以根据服务器内存情况,可以把 php-fpm 子进程数调到 100 或以上,在 4G 内存的服务器上 200 就可以。
2、调高 linux 内核打开文件数量
可以使用这些命令 ( 必须是 root 帐号 )echo 'ulimit -HSn 65536'>> /etc/profile
echo 'ulimit -HSn 65536'>> /etc/rc.local
source /etc/profile
3、调整脚本执行时间
如果脚本因为某种原因长时间等待不返回 ,导致新来的请求不能得到处理,可以适当调小如下配置。
nginx.conf 里面主要是如下:fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
php-fpm.conf 里如要是如下request_terminate_timeout =10s
4、增加缓存
修改或增加配置到 nginx.confproxy_buffer_size 64k;
proxy_buffers 512k;
proxy_busy_buffers_size 128k;
php.ini 的memory_limit 过小(如果有个别php程序进程需要占用极大内存时这个必须注意)
php-fpm.conf 中max_children或者max_requests 设置不合理(设置过小会因为没有足够的cgi进程处理请求,设置过大会出现一会儿有响应正常,一会儿等很久才有响应的情况,一般情况下children 按 照内存计算,比如说1G设置64,2G128。这个根据实际情况自行调整。
另外查看当前的PHP FastCGI进程数是否够用的命令为:netstat -anpo |grep “php-cgi” | wc -l 如果实际使用的“FastCGI进程数”接近预设的“FastCGI进程 数”,那么,说明“FastCGI进程数”不够用,需要增大。)
查看nginx错误日志,发现 pstream sent too big header while reading response headerfrom upstream ,则检查client head buffer,fastcgi buffer size是否过小,可设置为32K。
php 程序执行时间过长而超时,检查nginx和fastcgi中各种timeout设置。
(nginx 中的 fastcgi_connect_timeout 300;fastcgi_send_timeout 300 :fastcgi_read_timeout300; keepalive_timeout ; php-fpm中的request_terminate_timeout,php.ini中的max_execution_time)
看一下是不是配置的问题
https://blog.csdn.net/ucmir183/article/details/80240112
配置的问题,之前遇到过类似问题