本网站(662p.com)打包出售,且带程序代码数据,662p.com域名,程序内核采用TP框架开发,需要联系扣扣:2360248666 /wx:lianweikj
精品域名一口价出售:1y1m.com(350元) ,6b7b.com(400元) , 5k5j.com(380元) , yayj.com(1800元), jiongzhun.com(1000元) , niuzen.com(2800元) , zennei.com(5000元)
需要联系扣扣:2360248666 /wx:lianweikj
如何构建高性能服务器(以Nginx为例)
manongba · 523浏览 · 发布于2020-11-11 +关注
  • 减少写入

    • empty_gif

      使用返回一张1*1的空白图片,以减少http的返回报文长度

    • AIO

      在磁盘读写时,进程可以处理其他事情

      aio on|off|threads=[pool]

    • 直接IO,减少一次缓存的读写

      directio size|off 超过size则使用直接io,适合大文件

    • 增大error_log级别

    • error.log输出到内存

      error_log memory: 32m debug

      日志在32m的内存进行循环输出,只能看到32m的调试日志,可以提高性能

    • 关闭access_log

    • 压缩access_log

      access_log path [format] [gzip]

    • 是否开启proxy buffering

    • syslog替代本地io

      使用UDP写入代替io写入,提高性能

  • 线程池thread pool

    当某些io会阻塞时,使用线程池

增大网络宽带利用率
  • syn重试次数

    net.ipv4.tcp_syn_retries = 6

  • 本地端口可用范围

    net.ipv4.ip_local_port_range=32768 60999

    可以放大

  • 连接超时

    proxy_connect_timeout

  • 接收连接最大个数(syn未完成握手)

    net.ipv4.tcp_max_syn_backlog = 262144

    可以适当放大

  • 已完成握手

    net.core.somaxconn:系统最大backlog队列长度

  • 超出队列可以接收报文直接回RST

    net.ipv4.tcp_abort_on_overflow

  • 未被内核处理的报文队列长度

    net.core.netdev_max_backlog

  • syn/ack重试次数

    net.ipv4.tcp_synack_retries

  • 处理syn攻击

    net.ipv4.tcp_syncookies=1

    当syn队列满后,新的syn不进入队列,计算出cookie返回客户端,客户端携带cookie重新连接,服务器验证cookie,通过则建立连接。回导致TCP可选功能失效,例如扩充窗口/时间戳等

  • 操作系统最大句柄

    fs.file-max: 操作系统可以使用最大句柄数

    使用fs.file-nr可以查看当前已分配/正使用/上限

  • 用户最大句柄数

    /etc/security/limits.conf

    root soft nofile 63535

    root har nofile 65535

  • 进程限制最大句柄数

    worker_rlimit_nofile number

  • 进程最大连接数

    worker_connections number

  • Tcp Fast Open

    当TCP再次连接时,通过携带cookie,减少一次syn/ack的rtt时间,达到快速建立TCP连接的目的

nginxperformace-tfo
net.ipv4.tcp_fastopen 0|1|2|3

listen address [:port] [fastopen=number];

fastopen=number为了防止带数据的syn攻击,限制最大长度,指定TFO连接队列的最大长度

  • TCP缓冲区

    net.ipv4.tcp_rmen = 4096 87380 6291456

    net.ipv4.tcp_wmen = 4096 87380 6291456

    net.ipv4.tcp_men = 1541646 2055528 3083292

    net.ipv4.tcp_moderate_rcvbuf=1开启自动调节缓存模式

    listen address [:port] [recvbuf=size] [sndbuf=size]

    net.ipv4.tcp_adv_win_scale = 1

    应用缓存 = buffer / (2^tcp_adv_win_scale)

    接收窗口 = buffer - buffer/(2^tcp_adv_win_scale)

    BDP = 带宽* RTT/2

    buffer=BDP

  • Nagle算法

    网络中只存在一个未被确认的小报文ACK

    目的:避免一个连接上存在大量的小报文,提高网络利用率

    吞吐量优先:启用Nagle tcp_nodelay off

    低延时优先:禁用Nagle tcp_nodelay on

  • 拥塞窗口

    实际流量=拥塞窗口和接收窗口的最小值

  • 慢启动

    指数扩展拥塞窗口cwnd = cwnd*2

  • 拥塞避免

    窗口大于threshold线性增大

  • 拥塞发生

    发生丢包,

    RTO超时,threshold = cwnd/2, cwnd=1

    Fast Retransmit: cwnd=cwnd/2, threshold=cwnd

  • 快速恢复

    当Fast Retransmit出现时,cwnd调整为threshold+3*MSS

  • 优化慢启动

    增大初始cwnd=10

  • TCP keep-alive

    开启keepalive可以探测到失去连接的socket,并即时关闭,节省系统资源

    net.ipv4.tcp_keepalive_time = 7200

    net.ipv4.tcp_keepalive_intvl = 75

    net.ipv4.tcp_keepalive_probes = 9

  • timewait

    net.ipv4.tcp_orphan_retries = 0

    net.ipv4.tcp_fin_timeout = 60

    net.ipv4.tcp_max_tw_buckets = 262144 最大timewait连接数,超出直接关闭连接

  • lingering_close延迟关闭

    当接收缓冲依然接收到客户端的内容,服务器如果马上发送RST关闭连接,会导致客户端由于接收到RST而忽略http response

    lingering_close off|on|always

    reset_timedout_connection on|off; 当读写超时生效依法连接关闭,通过发送RST马上关闭连接,以释放资源

  • TLS/SLL优化握手

    ssl_session_cache

  • TLS/SSL会话票证tickets

    Nginx将会话session中的信息作为tickets加密发送给客户端,当客户端再次建立连接时带上tickets,Nignx验证复用session

    优点可以减少对称加解密的次数,提高性能

    缺点降低安全性,需要经常更换tickets密钥

    ssl_seesion_tickets on|off

    ssl_session_ticket_key file

  • 使用HTTP长连接

    keepalive_request number;

  • gzip压缩

    提高网络传输效率

    gzip on|off

  • 使用http2

统计函数调用统计

google-perltool

pprof --text|pdf

goodle_perftools_profiles file

硬件

  • 网卡:万兆网卡,例如10G/25G/40G

  • 磁盘:固态硬盘,关注IOPS/BPS指标

  • CPU:更快的主频,更大的缓存,更优的架构

  • 内存:更快的访问速度


相关推荐

将Fedora 29升级到Fedora 30

吴振华 · 704浏览 · 2019-05-14 22:00:02
使用Nginx反向代理到go-fastdfs

iamitnan · 726浏览 · 2019-05-23 13:42:00
利用VLC搭建组播流服务器

追忆似水年华 · 2693浏览 · 2019-06-14 11:27:06
用Bash脚本监控Linux上的内存使用情况

吴振华 · 974浏览 · 2019-06-24 11:27:02
加载中

0评论

评论
分类专栏
小鸟云服务器
扫码进入手机网页