out of memory error from kernel when I open hundred of thousandsof TCP connections

From: springzhong
Date: Thu Nov 04 2010 - 01:58:52 EST


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

spring zhong


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