`
langzhe
  • 浏览: 286430 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

求:Error:eaddrinuse 解决方法

阅读更多

 

大家好请教一个问题

服务器环境:ubuntu10.4+ejabberd2.14

客户端:tsung-1.3.3            "/proc/sys/net/ipv4/ip_local_port_range" 的值已经是 32768   61000现象描述:    

 

 我在用tsung做压力测试时,发现服务器的用户在线数停留在<=28320数值上就不在上升了,查看了一下日志发现Error:eaddrinuse 提示。

我期望用户同时在线数能继续上升。

 

我在网上查了一下,查到echo "30" > /proc/sys/net/ipv4/tcp_fin_timeout方法,设置过 但有起作用。

 

 

解决方法修改 p_local_port_range 参考下面信息,

echo "1024 61000" >/proc/sys/net/ipv4/ip_local_port_range

来自http://www.faqs.org/docs/securing/chap6sec70.html

 

 

6.7. The ip_local_port_range parameters

The /proc/sys/net/ipv4/ip_local_port_range defines the local port range that is used by TCP and UDP traffic to choose the local port. You will see in the parameters of this file two numbers: The first number is the first local port allowed for TCP and UDP traffic on the server, the second is the last local port number. For high-usage systems you may change its default parameters to 32768-61000 -first-last.

The default setup for the ip_local_port_range parameters under Red Hat Linux is: "1024 4999"

Version 6.1 only

To change the values of ip_local_port_range, type the following command on your terminal:

            [root@deep] /# echo "32768 61000" >/proc/sys/net/ipv4/ip_local_port_range
            

Add the above commands to the /etc/rc.d/rc.local script file and you'll not have to type it again the next time you reboot your system.

 

 

Version 6.2 only

Edit the /etc/sysctl.conf file and add the following line:

            # Allowed local port range
            net.ipv4.ip_local_port_range = 32768 61000
            

You must restart your network for the change to take effect. The command to manually restart the network is the following:

            [root@deep] /# /etc/rc.d/init.d/network restart
            

Setting network parameters [ OK ] Bringing up interface lo [ OK ] Bringing up interface eth0 [ OK ] Bringing up interface eth1 [ OK ]  

 

非 port_range引起可参考(

 

解决EADDRINUSE方法之一:修改操作系统设置

 

 

分享到:
评论
2 楼 langzhe 2010-11-17  
chuqingq 写道
echo "30" > /proc/sys/net/ipv4/tcp_fin_timeout   是修改FIN_WAIT状态超时的时长,应该对同时在线用户数没有影响;
28320大约就是61000-32768,可能是端口被用尽了导致无法创建新用户;我的默认配置是
linux2:~ # cat /proc/sys/net/ipv4/ip_local_port_range
1024 65000 


谢谢了,问题已解决,确实是ip_local_port_rang的问题 的配置默认是 32768 61000
1 楼 chuqingq 2010-11-17  
echo "30" > /proc/sys/net/ipv4/tcp_fin_timeout   是修改FIN_WAIT状态超时的时长,应该对同时在线用户数没有影响;
28320大约就是61000-32768,可能是端口被用尽了导致无法创建新用户;我的默认配置是
linux2:~ # cat /proc/sys/net/ipv4/ip_local_port_range
1024 65000 

相关推荐

    Android 中出现java.net.BindException: bind failed: EADDRINUSE 问题解决办法

    在Android开发过程中,网络通信是应用的重要组成部分,而使用UDP(User Datagram Protocol)进行数据传输时,可能会遇到`java.net.BindException: bind failed: EADDRINUSE`的问题。这个异常通常意味着应用程序尝试...

    backicomida:创建iComida应用程序的后端

    Backend do Projeto iComida Mensagem de Erro:Nodemon:错误:监听EADDRINUSE:地址已在使用中 $ lsof -i tcp:4000 $ kill -9 PID

    vxworks Error Codes

    - EADDRINUSE (0x30):地址已被使用。 - EADDRNOTAVAIL (0x31):地址不可用。 - ENETUNREACH (0x34):网络不可达。 - ECONNABORTED (0x35):连接被主动终止。 - ECONNRESET (0x36):连接被对端重置。 - ETIMEDOUT ...

    解决linux系统中运行node进程却无法杀死进程的问题

    Error: listen EADDRINUSE at errnoException (net.js:901:11) at Server._listen2 (net.js:1039:14) at listen (net.js:1061:10) at Server.listen (net.js:1127:5) at EventEmitter.listen (/root/webServer/node_...

    Linux下Socket编程的端口问题 ( Bind(): Address already in use ) PDF版

    当尝试绑定一个已经被其他进程使用的端口时,`bind()`函数会返回一个错误码“EADDRINUSE”,即地址已经被使用。这种情况常常出现在以下几种情况: 1. **进程未完全终止**:虽然通过`Ctrl + C`强制结束了进程,但该...

    Oracle Solaris 9 - man pages section 3: Networking Library Funct

    * EADDRINUSE:地址已经在使用 * ECONNREFUSED:连接被拒绝 3. send() 函数 send() 函数用于发送数据。 ssize_t send(int sockfd, const void *buf, size_t len, int flags); 参数: * sockfd:套接字描述符 * ...

    Linux 套接字编程中的 5 个隐患

    **解决方法:** 始终检查函数的返回值,确保它们符合预期。对于可能出现多种返回值的情况,还需要根据不同的返回值采取适当的措施。例如,在`send()`函数中,不仅需要检查是否返回-1(表示发送失败),还要检查...

    嵌入式Linux网络编程.ppt

    - **EADDRINUSE**:给定地址已经使用。 - **EBADF**:`sockfd` 不合法。 - **EINVAL**:`sockfd` 已经绑定到其他地址。 - **ENOTSOCK**:`sockfd` 是一个文件描述符,不是套接字描述符。 - **EACCES**:地址被保护,...

    Linux网络编程:绑定( bind )需要注意的问题

    解决方法包括选择未被使用的端口或释放已占用的端口。 2. **IP地址绑定**:默认情况下,`bind()`函数会将套接字绑定到所有可用的网络接口(即0.0.0.0)。如果需要绑定到特定的IP地址,例如本地环回地址(127.0.0.1...

    Linux_套接字编程中的_5_个隐患.pdf

    ### Linux套接字编程中的五个隐患 #### 隐患1:忽略返回状态 在Linux套接字编程中,忽略函数的返回状态是最常见的...通过以上方法,可以有效地避免在套接字编程过程中遇到的一些常见隐患,提高程序的稳定性和可靠性。

    检测端口是否被占用源码(C++)

    std::cerr &lt;&lt; "Error binding socket: " (errno) &lt;&lt; std::endl; return -1; } } int main() { int port_to_check = 80; // 替换为你需要检查的端口 int result = check_port_in_use(port_to_check); return ...

    Webserver:节点网络服务器

    解决这个问题的方法包括检查并修改配置文件,确保使用未被占用的端口,或者在启动服务器前先终止正在使用该端口的进程。 另一个常见错误是“ENOENT”,这通常意味着“没有找到文件或目录”。在Webserver中,这可能...

    Linux-Socket-Programming

    本书旨在采用一种“实践导向”的教学方法,帮助读者掌握Socket编程的基本原理,并能够快速上手。 #### 知识点二:基本概念介绍 - **章节结构**:本书分为两大部分,第一部分涵盖了Socket编程的基础概念,第二部分则...

    检测tcp端口是否被占用

    如果失败(例如EADDRINUSE错误),则端口已被占用。这种方法适用于本地端口检测,但需要注意的是,由于操作系统的缓冲区,短时间内多次尝试绑定可能会得到错误的结果。 在VS2010环境下,使用C++检测TCP端口是否被...

    c语言socket编程指南.txt

    - **常见错误**:例如ECONNREFUSED(连接被拒绝)、EADDRINUSE(地址已在使用)等。 - **处理方法**:使用`errno`和`strerror()`函数来诊断错误原因。 #### 11. 性能优化 - **非阻塞Socket**:设置Socket为非阻塞...

    poster-shop:“构建您的第一个Vue.js应用”课程中的案例研究项目的源代码-vue source code

    Vue.js海报店 “ ”课程中的案例研究项目的源代码 演示版 在此处查看已完成的项目: : 预安装 ... EADDRINUSE :::3000 。 您已经有另一个使用端口3000的应用程序。要么终止它,要么手动更改设置PORT

    UNIX网络编程第1卷

    根据提供的信息来看,实际与题目要求的“UNIX网络编程第1卷”这一主题不相符,而是涉及到了...通过学习本书,读者不仅可以掌握基本的网络编程知识,还能学会如何构建复杂的网络应用程序,并具备解决实际问题的能力。

    node-clean-architecture:用 NodeJS 编写的 Clean Architecture 实现

    我在应用程序启动时收到EADDRINUSE 该后端为用户实现了一个RESTful CRUD 接口,并符合 Eric Evan 的DDD和 Uncle Bob 的Clean Architecture ,文档中对此进行了简要说明。 它还公开了一个/docs/端点以供进一步参考...

    利用Node.js检测端口是否被占用的方法

    如果监听失败,`error` 事件会被触发,我们检查错误码 `EADDRINUSE` 来确定端口是否已被占用,并给出相应提示。 为了提高代码的可复用性,我们可以让程序接收命令行参数,动态地指定要检测的端口。Node.js 提供的 `...

Global site tag (gtag.js) - Google Analytics