- 论坛徽章:
- 0
|
环境:W2KProfessional
Perl:AcitvePerl5.8
技术:IO::Socket::INET与ithreads技术
发现问题:
慢速侵蚀内存,每次几十K到几百K。如果请求多了比较明显,请求少的时候看不出来。
我间段性非有序请求程序,达到2000次内存已经从刚开始的3.xxxMB升到11.152MB
CPU占用率平均一个请求就达到10%左右。如果请求多了以后会达到85%左右
不知道是我代码的问题还是ithreads的问题,同样代码使用IO::Select技术未出现这些问题
代码如下:
#!/usr/bin/perl
use IO::Socket;
use threads;
#构造SOCKET对象,打开端口
my $socket = IO::Socket::INET->;new( LocalPort =>; '8080',
Listen =>; SOMAXCONN,
Reuse =>; 1 );
my $CRLF = "\015\012";
my $count = 0;
warn "Server runing.....\n";
my $all_count = 0;
#等待,直到有事情发生
while(my $client = $socket->;accept) {
$count++;
threads->;new(\&proc,$client);
}
close $socket;
sub proc
{
my $handle=shift;
my $request = <$handle>;;
$body = qq~Hello World!
<p>;Server API Countcount
~;
$length = length($body);
#print the header
print $handle "HTTP/1.0 200 OK$CRLF";
print $handle "Content-length: $length$CRLF";
print $handle "Content-type: text/html\n\n$CRLF";
print $handle $CRLF;
print $handle "$body";
threads->;self->;detach;
$handle->;close();
} |
|