lkml.org 
[lkml]   [2010]   [Nov]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: out of memory error from kernel when I open hundred of thousands of TCP connections
From
Date
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@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2010-11-04 07:09    [W:0.042 / U:0.848 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site