TP框架在nginx服务下进行大文件上传或者EXECL导入到数据库中时,程序执行的时间过长,会导致程序报错。从nginx错误日志中找到错误原因是:
从上游读取响应标头时,上游超时(10060:连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机没有响应);
总的来说就是程序执行时间过长导致nginx没有接收到程序的响应,导致nginx认为程序超时
解决办法是在nginx.conf文件中添加相关的超时配置即可解决
http{
proxy_connect_timeout 600; #proxy转发模块的超时设置
proxy_send_timeout 600; #说明 这个指定设置了发送请求给upstream服务器的超时时间。超时设置不是为了整个发送期间,而是在两次write操作期间。如果超时后,upstream没有收到新的数据,nginx会关闭连接
proxy_read_timeout 300; #说明 该指令设置与代理服务器的读超时时间。它决定了nginx会等待多长时间来获得请求的响应。这个时间不是获得整个response的时间,而是两次reading操作的时间
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 128k;
fastcgi_buffers 8 128k; #设置fastcgi缓冲区为8×128k
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
send_timeout 600; #指定客户端的响应超时时间。这个设置不会用于整个转发器,而是在两次客户端读取操作之间。如果在这段时间内,客户端没有读取任何数据,nginx就会关闭连接。
}
在经过配置后重启nginx 再次进行数据导入,这次成功导入10W条数据到数据库中。