Nginx返回数据太大被截断问题

发现问题
  • php返回一组大的json数据,发现json数据格式不完整
碰到的坑
  • 1、 查询php字符串长度
  • 2、 内存
  • 3、 php配置
  • (以上是坑,根本没有毛关系)
解决
  • 1、查询nginx关于数据太大截断问题
  • 2、发现nginx在json或者其它数据太大的时候,采用文件的下发方式,当然文件的下发方式,肯定是写临时文件。
  • 3、find / -name "nginx" 查询nginx目录
  • 4、vim /etc/nginx/nginx.conf
  • 5、进入error-logs文件
  • 6、tail -n 100 error.log 查询最后100条的错误日志
  • 7、发现问题,如果是 *122342134 open() "/var/tmp/fcgi/5/2/500000001" failed (13: * Permission denied)
  • 8、解决问题:
    • chown -R nobody:root fcgi/
    • 为fcgi添加nginx启动的使用的用户权限。
    • nginx启动的用户配置在,nginx.conf------user nobody user参数
  • 9、如果发现的不是(7)的错误,是如下: *30503040 pwritev() "/var/tmp/nginx/fcgi/1/20/0000307201" failed (28: No space left on device) while reading upstream
  • 10、解决问题:
    • df -h 查看磁盘使用情况,发现主硬盘已经被占满
    • 编辑nginx.conf
    • 修改 error_log /export/nginx/logs/error.log; error_log /export/nginx/logs/error.log notice; error_log /export/nginx/logs/error.log info;
    • errorlog后面的路径是放到有空间的磁盘 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /export/nginx/logs/access.log main;
    • 同errorlog
  • 至此,已经解决nginx返回大json问题或者大数据被截断问题
  • 当然,可能还会有其它问题,其它问题的情况,先看error.log,再根据错误进行定位。

郝先生

继续阅读此作者的更多文章