nginx 504 Gateway Time-out
上传图片、文件的时候会出现这个异常,出现这个异常的原因为以下。
一、Nginx 文件配置不正确
可以修改nginx的配置,nginx 的常用配置说明如下
#设定http服务器
http
{
include mime.types; #文件扩展名与文件类型映射表
default_type application/octet-stream; #默认文件类型
#charset utf-8; #默认编码
server_names_hash_bucket_size 128; #服务器名字的hash表大小
client_header_buffer_size 32k; #上传文件大小限制
large_client_header_buffers 4 64k; #设定请求缓
client_max_body_size 8m; #设定请求缓
sendfile on; #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。
autoindex on; #开启目录列表访问,合适下载服务器,默认关闭。
tcp_nopush on; #防止网络阻塞
tcp_nodelay on; #防止网络阻塞
keepalive_timeout 120; #长连接超时时间,单位是秒
#FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。下面参数看字面意思都能理解。
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
}
二、随机数取值异常,导致服务器卡死
这个随机数的异常一般出现在Linux服务器的Java开发中,目前Windows服务器暂未发现该问题。如果程序卡住的地方刚好调用了随机数,那么就是这个原因了。解决方法如下:
1.安装随机数加快工具rngd服务(熵服务)
yum install rngd-tools
或者
yum install rng-tools
然后启动服务(记得一定要启动,否则无效)
systemctl start rngd
参考博客 https://www.jianshu.com/p/576d356dc163
2.配置JRE配置文件
修改JRE中的java.security文件securerandom.source=file:/dev/urandom
3.在Java 程序启动的时候加上"-Djava.security.egd=file:/dev/./urandom" 参数加快随机数产生过程。