1. 什么是链接超时php
(1) 举个例子,某饭店请了服务员招待顾客,可是如今饭店不景气,所以要解雇掉一些服务员,这里的服务员就至关于 Nginx 服务创建的链接node
(2) 当服务器创建的链接没有接收处理请求时,能够在指定的时间内让它超时自动退出python
2. 链接超时的做用程序员
(1) 将无用的链接设置为尽快超时,能够保护服务器的系统资源(CPU、内存、磁盘)后端
(2) 当链接不少时,及时断掉那些创建好的但又长时间不作事的链接,以减小其占用的服务器资源服务器
(3) 若是黑客攻击,会不断地和服务器创建链接,所以设置链接超时以防止大量消耗服务器的资源并发
(4) 若是用户请求了动态服务,则 Nginx 就会创建链接,请求 FastCGI 服务以及后端 MySQL 服务,设置链接超时,使得在用户容忍的时间内返回数据app
3. 链接超时存在的问题运维
(1) 服务器创建新链接是要消耗资源的,所以,链接超时时间不宜设置得过短,不然会形成并发很大,致使服务器瞬间没法响应用户的请求tcp
(2) 有些 PHP 站点会但愿设置成短链接,由于 PHP 程序创建链接消耗的资源和时间相对要少些
(3) 有些 Java 站点会但愿设置成长链接,由于 Java 程序创建链接消耗的资源和时间要多一些,这时由语言的运行机制决定的
4. 设置链接超时
(1) keepalive_timeout :该参数用于设置客户端链接保持会话的超时时间,超过这个时间服务器会关闭该链接
(2) client_header_timeout :该参数用于设置读取客户端请求头数据的超时时间,若是超时客户端尚未发送完整的 header 数据,服务器将返回 "Request time out (408)" 错误
(3) client_body_timeout :该参数用于设置读取客户端请求主体数据的超时时间,若是超时客户端尚未发送完整的主体数据,服务器将返回 "Request time out (408)" 错误
(4) send_timeout :用于指定响应客户端的超时时间,若是超过这个时间,客户端没有任何活动,Nginx 将会关闭链接
(5) tcp_nodelay :默认状况下当数据发送时,内核并不会立刻发送,可能会等待更多的字节组成一个数据包,这样能够提升 I/O 性能,可是,在每次只发送不多字节的业务场景中,使用 tcp_nodelay 功能,等待时间会比较长
http {
include mime.types;
server_names_hash_bucket_size 512;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
tcp_nodelay on;
client_header_timeout 15;
client_body_timeout 15;
send_timeout 25;
include vhosts/*.conf;
}
做者简介:
陈志珂(头条号:强扭的瓜很差吃)公众号“铅笔学园”运维内容合做做者之一,目前就任于中国最大的安卓应用软件公司,任高级工程师,如今公司任php开发工程师,python开发工程师,高级运维工程师。
铅笔学园:IT资源分享|知识分享,作初级程序员的指明灯