Linux的TCP连接问题解决调优观察

9 篇文章 0 订阅
2 篇文章 0 订阅

系统: centos7.3

遇到问题:

1、open so many files

解:

        当tcp连接数过多的时候,可能会提示open so many files。针对用户打开最大文件数的限制, 在limits.conf对应的nofile,不管是man手册还是文件中说明都只是一句话“maximum number of open files",它其实对应是单个进程能打开的最大文件数,通常为了省事,我们想取消它的限制,根据man手册中,“values -1, unlimited or infinity indicating no limit”,-1、unlimited、infinity都是表明不做限制,可是当你实际给nofile设置成这个值,等你重启就会发现无法登录系统了。由此可见,nofile是有一个上限的,同时用ulimit测试:

ulimit其实就是对单一程序的限制,进程级别的

file-max是所有时程最大的文件数

nr_open是单个进程可分配的最大文件数

        所以在修改/etc/security/limits.conf的时候要注意,考虑上面三个值的大小,一旦nofile值超过nr_open,则可能ssh连接断开无法登陆。

[root@server-mysql fs]# ulimit -n unlimited
-bash: ulimit: open files: cannot modify limit: Operation not permitted
[root@server-mysql fs]# 
[root@server-mysql fs]# ulimit -n 1048576       
[root@server-mysql fs]# ulimit -n 1048577
-bash: ulimit: open files: cannot modify limit: Operation not permitted
[root@server-mysql fs]# cat /proc/sys/fs/nr_open
1048576
[root@server-mysql fs]# echo 1000000 > /proc/sys/fs/nr_open
[root@server-mysql fs]# cat /proc/sys/fs/nr_open
1000000
[root@server-mysql fs]# ulimit -n 999999
[root@server-mysql fs]# ulimit -n 1000000
[root@server-mysql fs]# ulimit -n 1000001
-bash: ulimit: open files: cannot modify limit: Operation not permitted
?
[root@server-mysql fs]# cat file-nr
2496    0       132022
[root@server-mysql fs]# cat file-max
132022
[root@server-mysql fs]# echo 2000000 >file-max
[root@server-mysql fs]# cat file-nr
2496    0       2000000

参考博客:Linux下设置最大文件打开数nofile及nr_open、file-max

        解决完open so many files问题后,当tcp连接在内存足够的情况下达到一定量级后就会稳定在同一个连接数。后面的连接则会连接超时,这个时候就需要对系统参数进行优化。优化可以从两个方面考虑:

 

 

 参考:linux中高并发socket最大连接数的优化详解

        但是实际在修改的时候发现net.ipv4.ip_conntrack_max不存在,但是存在nf_conntrack_max。可以在/etc/sysctl.conf修改net.nf_conntrack_max = 131070参数,解决连接无法继续连接的问题。

[root@dzpj-server19 net]# pwd
/proc/sys/net
[root@dzpj-server19 net]# ls
core  ipv4  ipv6  netfilter  nf_conntrack_max  unix
[root@dzpj-server19 net]# cd ipv4/
[root@dzpj-server19 ipv4]# ls
cipso_cache_bucket_size            ip_early_demux                  tcp_autocorking                   tcp_max_orphans            tcp_stdurg
cipso_cache_enable                 ip_forward                      tcp_available_congestion_control  tcp_max_ssthresh           tcp_synack_retries
cipso_rbm_optfmt                   ip_forward_use_pmtu             tcp_base_mss                      tcp_max_syn_backlog        tcp_syncookies
cipso_rbm_strictvalid              ipfrag_high_thresh              tcp_challenge_ack_limit           tcp_max_tw_buckets         tcp_syn_retries
conf                               ipfrag_low_thresh               tcp_congestion_control            tcp_mem                    tcp_thin_dupack
icmp_echo_ignore_all               ipfrag_max_dist                 tcp_dsack                         tcp_min_tso_segs           tcp_thin_linear_timeouts
icmp_echo_ignore_broadcasts        ipfrag_secret_interval          tcp_early_retrans                 tcp_moderate_rcvbuf        tcp_timestamps
icmp_errors_use_inbound_ifaddr     ipfrag_time                     tcp_ecn                           tcp_mtu_probing            tcp_tso_win_divisor
icmp_ignore_bogus_error_responses  ip_local_port_range             tcp_fack                          tcp_no_metrics_save        tcp_tw_recycle
icmp_ratelimit                     ip_local_reserved_ports         tcp_fastopen                      tcp_notsent_lowat          tcp_tw_reuse
icmp_ratemask                      ip_nonlocal_bind                tcp_fastopen_key                  tcp_orphan_retries         tcp_window_scaling
igmp_max_memberships               ip_no_pmtu_disc                 tcp_fin_timeout                   tcp_reordering             tcp_wmem
igmp_max_msf                       neigh                           tcp_frto                          tcp_retrans_collapse       tcp_workaround_signed_windows
igmp_qrv                           ping_group_range                tcp_invalid_ratelimit             tcp_retries1               udp_mem
inet_peer_maxttl                   route                           tcp_keepalive_intvl               tcp_retries2               udp_rmem_min
inet_peer_minttl                   tcp_abort_on_overflow           tcp_keepalive_probes              tcp_rfc1337                udp_wmem_min
inet_peer_threshold                tcp_adv_win_scale               tcp_keepalive_time                tcp_rmem                   xfrm4_gc_thresh
ip_default_ttl                     tcp_allowed_congestion_control  tcp_limit_output_bytes            tcp_sack
ip_dynaddr                         tcp_app_win                     tcp_low_latency                   tcp_slow_start_after_idle
[root@dzpj-server19 ipv4]# 

参考:内核优化 之 Linux下高并发socket最大连接数所受的各种限制(详解)


持续更新中。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值