lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:	Thu, 04 Nov 2010 07:07:01 +0100
From:	Eric Dumazet <eric.dumazet@...il.com>
To:	springzhong <davidmahorse@...il.com>
Cc:	linux-kernel@...r.kernel.org
Subject: Re: out of memory error from kernel when I open hundred of
 thousands of TCP connections

Le jeudi 04 novembre 2010 à 13:58 +0800, springzhong a écrit :
> The source of serve is like:
> ListeningThread listeningThread(this, nPortNum);
> listeningThread.nPortNum=6475;
> listeningThread.Start();
> ListeningThread listeningThread2(this, 6476);
> listeningThread2.nPortNum=6476;
> listeningThread2.Start();
> ListeningThread listeningThread3(this, 6477);
> listeningThread3.nPortNum=6477;
> listeningThread3.Start();
> ListeningThread listeningThread4(this, 6477);
> listeningThread4.nPortNum=6478;
> listeningThread4.Start();
> 
> The source of client is like:
> for (int i = 0; i < 60000; i++)
> {
> this->Connect("127.0.0.1", nPortNum, false, pClientSocket);
> this->Connect("127.0.0.1", 6476, false, pClientSocket);
> this->Connect("127.0.0.1", 6477, false, pClientSocket);
> this->Connect("127.0.0.1", 6478, false, pClientSocket);
> }
> 
> I want to test the maximum tcp connections of linux in my netbook with
> 2G memeory.
> But I just found It cannot exceed 240000 connections.Then an 
> "out of memory error" occured. But it looks like there is still a lot of
> free memory in my computer.
> 
> I want to rechange the kernel to accept more TCP connections like one
> million tcp connections in my network.
> But I find there are too many source codes in it. 
> Could you give me any suggestions?
> I have changed my environment like this with epoll:
> /etc/security/limits.conf
> * soft nofile 802400
> * hard nofile 802400
> # End of file
> 
> cat /proc/sys/fs/file-max
> 2204218
> 
> cat /etc/sysctl.conf
> net.ipv4.ip_local_port_range = 1024 65000
> 
> cat /proc/sys/fs/epoll/max_user_watches
> 2500873
> 
> It is not the limitation of file ids of linux.It is an error from kernel
> of LINUX
> 

If you run a 32bit kernel, you probably hit a LOWMEM limit : sockets
structures are kernel structures, allocated from LOWMEM zone.
This is about 900 MBytes in 32bit kernel, even if you have 4GB of total
ram.

grep Low /proc/meminfo

If your netbook has 2GB of memory, you could compile a kernel with a
2G/2G User/Kernel split

CONFIG_VMSPLIT_2G=y



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ