zoukankan      html  css  js  c++  java
  • nginx——优化 Nginx 连接超时时间

    1. 什么是连接超时

    (1) 举个例子,某饭店请了服务员招待顾客,但是现在饭店不景气,因此要解雇掉一些服务员,这里的服务员就相当于 Nginx 服务建立的连接

    (2) 当服务器建立的连接没有接收处理请求时,可以在指定的时间内让它超时自动退出

    2. 连接超时的作用

    (1) 将无用的连接设置为尽快超时,可以保护服务器的系统资源(CPU、内存、磁盘)

    (2) 当连接很多时,及时断掉那些建立好的但又长时间不做事的连接,以减少其占用的服务器资源

    (3) 如果黑客攻击,会不断地和服务器建立连接,因此设置连接超时以防止大量消耗服务器的资源

    (4) 如果用户请求了动态服务,则 Nginx 就会建立连接,请求 FastCGI 服务以及后端 MySQL 服务,设置连接超时,使得在用户容忍的时间内返回数据

    3. 连接超时存在的问题

    (1) 服务器建立新连接是要消耗资源的,因此,连接超时时间不宜设置得太短,否则会造成并发很大,导致服务器瞬间无法响应用户的请求

    (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资源分享|知识分享,做初级程序员的指明灯

  • 相关阅读:
    【Git】分支管理
    【Java】jprofiler工具初上手
    【中间件】JMS
    【Idea】编译问题Intellij Error: Internal caches are corrupted or have outdated format
    【测试】测试用例选择
    【DevOps】
    【Unix】z/OS系统
    【数据库】表空间释放
    【数据库pojo类】Oracle数据库中各数据类型在Hibernate框架中的映射
    基于闭包实现的显示与隐藏
  • 原文地址:https://www.cnblogs.com/qianbixueyuan/p/9575031.html
Copyright © 2011-2022 走看看