`
fantaxy025025
  • 浏览: 1327544 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Linux下解决高并发socket最大连接数所受的各种限制(解除IO限制)

 
阅读更多

==

=

-

from:Linux下解决高并发socket最大连接数所受的各种限制(解除IO限制)

参考:Linux下高并发socket最大连接数所受的各种限制

 

  linux作为服务器系统,当运行高并发TCP程序时,通常会出现连接建立到一定个数后不能再建立连接的情况

  本人在工作时,测试高并发tcp程序(GPS服务器端程序),多次测试,发现每次连接建立到3800左右时,再也不能建立tcp连接,最总上网搜索,参考:http://blog.csdn.net/guowake/article/details/6615728解决了连接限制的问题,此处记录下来,方便日后工作继续使用,虽然参考博文中内容有点多,文中所描述的内容也不怎么明白,但总结下来,按如下几步操作即可(我映像中,按此方法设置后,测试建立连接8000多时也未出现什么错误) :

  • 第一步,修改/etc/security/limits.conf文件,在文件中添加如下行(*指代系统用户名),修改Linux系统对用户的关于打开文件数的软限制和硬限制

    * soft nofile 20000

    * hard nofile 20000

 

  • 第二步,修改/etc/pam.d/login文件,在文件中添加如下行:

    session required /lib/security/pam_limits.so

    如果是64bit系统的话,应该为 :
    session required /lib64/security/pam_limits.so

 

  • 第三步,修改/etc/sysctl.conf文件,在文件中(清楚文件原始内容)添加如下行(修改网络内核对TCP连接的有关限制):
复制代码
net.ipv4.ip_local_port_range = 1024 65535

net.core.rmem_max=16777216

net.core.wmem_max=16777216

net.ipv4.tcp_rmem=4096 87380 16777216

net.ipv4.tcp_wmem=4096 65536 16777216

net.ipv4.tcp_fin_timeout = 10

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_timestamps = 0

net.ipv4.tcp_window_scaling = 0

net.ipv4.tcp_sack = 0

net.core.netdev_max_backlog = 30000

net.ipv4.tcp_no_metrics_save=1

net.core.somaxconn = 262144

net.ipv4.tcp_syncookies = 0

net.ipv4.tcp_max_orphans = 262144

net.ipv4.tcp_max_syn_backlog = 262144

net.ipv4.tcp_synack_retries = 2

net.ipv4.tcp_syn_retries = 2
复制代码

 

  • 第四步,执行如下命令(使上述设置生效):

    

/sbin/sysctl -p /etc/sysctl.conf

/sbin/sysctl -w net.ipv4.route.flush=1

 

 

  • 第五步,执行如下命令(linux系统优化完网络必须调高系统允许打开的文件数才能支持大的并发,默认1024是远远不够的):

 

 echo ulimit -HSn 65536 >> /etc/rc.local

 echo ulimit -HSn 65536 >>/root/.bash_profile

 ulimit -HSn 65536

 

 

  • 第六步,重启机器。

 

 

 

 

-

=

==

分享到:
评论

相关推荐

    Linux下高并发socket最大连接数所受的各种限制(详解)

    下面小编就为大家带来一篇Linux下高并发socket最大连接数所受的各种限制(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Linux下高并发socket最大连接数所受的各种限制

    总结来说,为了在Linux下处理高并发Socket连接,我们需要关注文件描述符的限制,并通过调整用户和系统级别的限制来提高并发数。同时,注意系统资源的合理分配和管理,以确保整体性能和稳定性。这个过程涉及多个层次...

    [服务器性能优化]Linux下高并发socket最大连接数和sysctl(time_wait)设置

    本文将深入探讨如何优化Linux下的socket连接数以及如何调整sysctl参数,特别是time_wait状态的影响。这有助于提升服务器处理大量并发请求的能力,确保服务的稳定性和响应速度。 首先,我们需要了解socket连接数的...

    获取和修改linux socket最大连接数,linux,系统

    Socket的最大连接数是一个重要的系统资源限制,关乎到服务器的并发处理能力。本文将深入探讨如何获取和修改Linux Socket的最大连接数,以及其背后的系统原理。 首先,我们需要了解`/proc/sys/net/core/somaxconn`这...

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

    在Linux环境下进行网络编程时,经常会遇到高并发场景下Socket连接数的限制问题。本篇文章将详细阐述如何针对这一问题进行优化,帮助开发者更好地理解和掌握相关技术。 #### 一、理解限制来源 在Linux系统中,每个...

    查看本机tcp socket当前连接数(并发量).zip

    查看本机tcp socket当前连接数(并发量).zip

    Linux下基于socket多线程并发通信的实现

    总结来说,Linux下的多线程并发通信基于socket实现,结合TCP/IP协议,能够高效地处理多个客户端的并发请求。开发者需要理解套接字的概念、类型以及编程原理,同时掌握多线程编程技巧,包括线程安全、线程池等,以...

    C#高并发SOCKET服务器和客户端完整工程实例源码.zip

    在高并发场景下,服务器需要处理大量同时连接的客户端请求。C#中的Socket服务器通常采用多线程或异步编程模型来提高并发性能。多线程允许每个客户端连接在一个单独的线程上运行,而异步编程(如使用async/await...

    C#Socket高并发_socket_socket并发_c#socket_C#_socket高并发_源码.zip

    C#的Socket支持非阻塞I/O和异步操作,这些特性使得在高并发场景下处理多个客户端连接成为可能。常见的并发策略有线程池、异步回调、IOCP(I/O完成端口)等。 Socket并发: 并发Socket编程的核心在于如何有效地管理...

    Linux或Windows下判断socket连接状态

    本文将深入探讨在Linux和Windows环境下,如何通过编程来检测Socket连接是否已断开。 首先,理解Socket的基本概念是必要的。Socket是应用层与传输层之间的接口,它允许应用程序通过TCP/IP协议栈与其他计算机进行通信...

    C#Socket高并发,socket高并发解决方案,C/C++

    - **负载均衡**:当单个服务器无法应对高并发时,可以采用负载均衡策略,将流量分发到多个服务器,如轮询、最少连接数、哈希等算法。 - **错误处理**:良好的错误处理机制是保证系统稳定性的关键,应能处理各种异常...

    Linux下高并发服务器的研究与实现.pdf

    Linux下高并发服务器的研究与实现 本文旨在探讨 Linux 操作系统下高并发服务器的研究与实现。Linux 作为一个稳定、开源、拥有完善的网络功能的操作系统,在涉及网络相关的软件开发时具有得天独厚的优势。在进行网络...

    测试操作系统socket连接数.zip_linux_socket_socket检测_压力测试

    在这个场景下,我们通过模拟大量并发的socket连接来测试Linux系统的承载能力,以找出其性能瓶颈,评估其在高负载环境下的表现。这样的测试可以帮助我们决定是否需要调整系统设置,如增加内核参数或者优化网络服务...

    Linux下使用C++进行Socket编程

    Linux下使用C++进行Socket编程是一门涉及网络通信的高级技术。在Linux操作系统中,Socket编程通常采用C语言,因为传统的GNU C库提供了丰富的Socket API函数,但这些函数是面向过程设计的,没有面向对象的封装,使用...

    weapp.socket.io

    Socket.IO是一个流行的JavaScript库,它提供了跨平台、跨浏览器的实时应用框架,支持WebSocket以及其他多种降级方案,确保在各种网络条件下的通信稳定性。 首先,我们要理解Socket.IO的核心概念。WebSocket是一种在...

    socket.io,socket.io-client下载

    Socket.IO和Socket.IO-Client是两个非常重要的库,主要用于实现实时双向通信,尤其是在Web开发领域。它们使得JavaScript客户端(浏览器)与Node.js服务器之间能够建立WebSocket风格的连接,提供了强大的实时通信解决...

    Linux下基于socket多线程并发通信的实现.pdf

    "Linux下基于socket多线程并发通信的实现" 本文主要探讨Linux操作系统下基于socket多线程并发通信的实现。 socket是UNIX系统开发中的网络通信接口,可以对台计算机之间的通信规范进行合理定义,从而达到通信的目的...

    Nerv.zip_linux 服务器_socket 高并发_socket高并发_跨平台_跨平台socket

    《Linux服务器上的Socket编程:实现高并发与跨平台通信》 在信息技术领域,Socket编程是构建网络应用程序的基础,尤其在Linux服务器环境中,它扮演着至关重要的角色。本篇将深入探讨如何利用Socket实现跨平台的高...

    异步IO之事件选择模型使用说明_高并发_vcsocket异步IO_

    在IT行业中,异步I/O(Asynchronous Input/Output)是一种高效的编程模型,特别是在处理高并发...通过深入学习和实践这个文档,开发者将能够熟练掌握在VC++中利用异步I/O和事件选择模型解决高并发服务器编程中的挑战。

Global site tag (gtag.js) - Google Analytics