多进程-多客户socket出现fork: Resource temporarily unavailable

问题描述

多客户socket出现fork: Resource temporarily unavailable

server端代码如下:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "multiple_socket.h"

int main()
{
int server_sockfd,client_fd;
struct sockaddr_in server_addr, client_addr;
socklen_t server_len, client_len;

/* Create an unnamed socket for server */
server_sockfd = socket(AF_INET, SOCK_STREAM, 0);

/* Name the socket */
server_addr.sin_family = AF_INET;
server_addr.sin_port = SIN_PORT;
server_addr.sin_addr.s_addr = inet_addr(LOOPBACK);
server_len = sizeof(server_addr);
bind(server_sockfd, (struct sockaddr *)&server_addr, server_len);

/* Create a connection queue & wait for clients */
listen(server_sockfd, SOCKET_QUEUE_SIZE);
signal(SIGCHLD, SIG_IGN);

while(1) {
    char ch;
    if(0 == fork()) {
        /* Accept a connection */
        client_len = sizeof(server_addr);
        client_fd = accept(server_sockfd,
            (struct sockaddr *)&client_addr, &client_len);

        read(client_fd, &ch, 1);
        sleep(SLEEP_TIME);
        ch++;
        write(client_fd, &ch, 1);
        close(client_fd);
        exit(0);
    }
}

return 0;

}


解决方案

你这样循环的创建子进程,导致资源不足,所以报这样的错误,应该在accept之后fork

解决方案二:

这样等待链接资源消耗太狠了,应该链接成功一路开启一个子进程才合理,建议还是不要用多进程,还是多线程更为舒服用起来

时间: 2024-10-28 04:15:27

多进程-多客户socket出现fork: Resource temporarily unavailable的相关文章

cannot set user id: Resource temporarily unavailable

    前阵子,Infra报告无法透过putty以及SecureCRT连接到数据库服务器,提示的错误为Resource temporarily unavailable.由于该服务器上有差不多有20个nstance,应该是超出了系统当前设置的值.关于超出资源限制的事之前有碰到过,只不过不是这个错误,而是open files: cannot modify limit: Operation not permitted.下面描述一下关于Resource temporarily unavailable这个

su - oracle报错su: cannot set user id: Resource temporarily unavailable

今天上线服务器连接数较多,我们知道ORACLE是多进程数据库,那么一个session 往往对应了一个OS的process,今天使用root进行切换的时候居然报错. 在测试上模拟再现 [root@testmy proc]# su - oracle su: cannot set user id: Resource temporarily unavailable 出现这个这个错误当然第一反应是查看ulimit -a,如果真是资源不够了卧槽就悲剧 了 我使用开始连接好的进行查看: [oracle@tes

nginx connect() to unix:/var/run/php-fpm.sock failed (11: Resource temporarily unavailable)_nginx

网站常出现502 bad gateway,程序没有问题. 根据nginx日志: 复制代码 代码如下: connect() to unix:/var/run/php-fpm.sock failed (11: Resource temporarily unavailable) 发现phpfpm的listen是unix sock方式运行的,问题可能出在php fpm上.php fpm配置文件里有backlog,backlog是linux服务器在socket处理连接数的定义,phpfpm默认为-1,将-

Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)

:Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable) 出现这个问题的原因可能是有另外一个程序正在运行,导致资源被锁不可用.而导致资源被锁的原因,可能是上次安装时没正常完成,而导致出现此状况. 解决方法:输入以下命令 sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock 之后再安装想装的包,即可解决

TNS-12518,TNS-12536,TNS-00506,Linux Error: 11: Resource temporarily unavailable

    TNS-12518: TNS:listener could not hand off client connection TNS-12536: TNS:operation would block  TNS-12560: TNS:protocol adapter error   TNS-00506: Operation would block    Linux Error: 11: Resource temporarily unavailable It turns out the Linu

/var/cache/apt/archives/lock - open (11 Resource temporarily unavailable)

当你执行Apt-get的时候出现以下错误的 解决方法:&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;无法获得锁 /var/cache/apt/archives/lock - open (11 Resource temporarily un available) 你一定把新立得/软件更新/添加删除 等与软件安装相关的程序打开了,请把他们关掉吧.apt-get在同一时刻只能有一个在执行.

Apache ProxyPass出现503 Service Temporarily Unavailable如何解决

今天在Redhat5 Linux上配置Apache和Tomcat整合,希望将Jsp页面的地址转发到tomcat的地址上去. 如真实的Jsp地址为 http://127.0.0.1:8080/jsp/ 希望通过访问 http://127.0.0.1/jsp/ 也可以访问到. 于是在Apache中配置ProxyPass : ProxyPass /jsp http://localhost:8080/jsp 但发现当访问的时候发现不可访问,出现503错误: Service Temporarily Una

Service Temporarily Unavailable的503错误是怎么回事?_Linux

一般来说,出现Service Temporarily Unavailable错误多半是因为网站访问量大,造成了流量超限或者并发数大引起的资源超限出现的错误.解决的方法一个是升级空间到更佳配置,要么就是检查网站系统程序,使之更佳优化. 错误展示: Service Temporarily Unavailable The server is temporarily unable to service your request due to maintenance downtime or capacit

Service Temporarily Unavailable

Service Temporarily Unavailable The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later. 标题:服务暂时不可用. 服务器因停机检修或容量问题而暂时不能接受你的要求.请稍后再试.只要你重新启动Apache服务就可以了,也可能是因为你所访问的网站CPU池已达到最大值,