免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: duketang
打印 上一主题 下一主题

用Perl如何实现高效稳定的Socket Server? [复制链接]

论坛徽章:
0
1 [报告]
发表于 2005-11-18 19:15 |显示全部楼层
原帖由 duketang 于 2005-11-18 19:09 发表
在运行一段时间后 进程就会死掉

#!/usr/bin/perl
use strict;
use IO::Socket;
my $server = IO::Socket::INET->new
(
        LocalPort =>2008,
        Type      =>SOCK_STREAM,
         ...



while($client = $server->accept())
这里你这样写,不死掉才怪呢。

另外,要调用waitpid来回收child process。只创建,不回收,会对OS很不利的。

论坛徽章:
0
2 [报告]
发表于 2005-11-19 18:43 |显示全部楼层
原帖由 duketang 于 2005-11-19 18:33 发表
项这样的 每秒钟最多能承受多少连接?


做个压力测试不就知道了嘛,几百个连接没问题的。
当然,还得取决于你的主机配置。

论坛徽章:
0
3 [报告]
发表于 2005-11-19 20:01 |显示全部楼层
原帖由 duketang 于 2005-11-19 18:48 发表
我现在最大只能达到八百多 实际环境中
如果在这段程序中实现对多个数据库发送query速度会慢多少?
数据库连接在前面初始化好 只在repeat_server中进行发送query的操作
没有检索 只是update delete ..等不需要 ...


同时连接800多相当不错了,可别对perl socket期望太高。
数据库查询不是你的程序的性能瓶颈,如果数据库本身性能不错的话。

论坛徽章:
0
4 [报告]
发表于 2005-11-19 21:40 |显示全部楼层
原帖由 freeand 于 2005-11-19 21:36 发表


为什么这样说?
没希望了?


实际就是这样的,你可以自己试试。
如果能达到上千的同时连接,并且性能稳定,那请告诉偶一声。
btw:如果你的网络应用规模那么大,照你的意思是同时连接数过千,那为什么不用C来实现?

论坛徽章:
0
5 [报告]
发表于 2005-11-19 22:07 |显示全部楼层
原帖由 duketang 于 2005-11-19 21:51 发表
我是想做mysql同步 所以在PHP中调用数据库类的时候针对update insert replace语句建立socket连接 把query 发到这个sock_svr
由sock_svr分发到各个mysql server上都是短连接 时间都不超过1秒 Perl的sock承受不了过 ...



你自己试试嘛,偶说能支持几千也没用呀。
Perl的Socket,fork等都是基于底层的C库封装的,你这里只是简单的利用了它们。要想实现高性能的svr,也不是这几十行code就可以的呀。在小压力环境下,你的子进程及Socket实现良好。若压力大时,Socket svr的子进程会出现收不回的情况,并交互影响,结果是越来越多的子进程累计收不回,导致system resource耗光而让OS Down掉。偶经历过这种情况,你可以自己test下。

论坛徽章:
0
6 [报告]
发表于 2005-11-19 22:09 |显示全部楼层
原帖由 duketang 于 2005-11-19 21:51 发表
我是想做mysql同步 所以在PHP中调用数据库类的时候针对update insert replace语句建立socket连接 把query 发到这个sock_svr
由sock_svr分发到各个mysql server上都是短连接 时间都不超过1秒 Perl的sock承受不了过 ...


另外,要实现你的目的,也用不着自己写socket代理呀;有很多成熟的db cache proxy的,例如Apache:: DBI

论坛徽章:
0
7 [报告]
发表于 2005-11-19 23:50 |显示全部楼层
原帖由 duketang 于 2005-11-19 22:49 发表
apache :: DBI 是什么东西? 是perl的模块?


Seeing here for something about Apache:: DBI:

http://perl.apache.org/docs/1.0/ ... database_connection
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP