免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: BetonArmEE

[C] 单进程多线程服务器存在这样的弊端 [复制链接]

论坛徽章:
0
发表于 2009-11-17 22:45 |显示全部楼层
"进程池prefork+accept锁"

accept锁没必要了吧,2.6内核没有惊群现象。

论坛徽章:
0
发表于 2009-11-18 11:13 |显示全部楼层
看各位神人的讨论,过瘾~~

请问哪位神人建立了这方面的讨论群,我想参加

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
发表于 2009-11-18 17:42 |显示全部楼层
原帖由 BetonArmEE 于 2009-11-17 21:03 发表


也就是说任务间通讯量大且复杂,可以考虑多线程,全局变量+锁用来交换数据比较合适,嗯嗯

给一个DAU的使用文档。它基于低级包装器SDBC-安全数据库连接。
比如配置管理,打开关闭数据库,数据库基础操作,日志管理什么的都在SDBC里

下边是一个DAU通用卸载程序,速度飞快,每秒5-6万记录吧:

  1. int unloadfile(T_SQL_Connect *SQL_Connect,char *tablename,FILE *ifd,FILE *ofd,int Pflg,char *where,int buflen)
  2. {
  3. char *p;
  4. DAU _DAU;
  5. int num,ret,cur;
  6. //我可不知道表名哦,运行时提交过来的。
  7. //SQL_Connect是事先打开的SDBC数据库句柄
  8.     ret=DAU_init(&_DAU,SQL_Connect,tablename,0,0); //没有模板,由数据库根据表名生成模板
  9.     if(ret) {
  10.         ShowLog(1,"unloadfile:DAU_init tabname=%s,ret=%d",tablename,ret);
  11.         return -1;
  12.     }
  13.     ret=DAU_prepare(&_DAU,where); //生成及prepare语句。
  14.     ShowLog(5,"unldfile:ret=%d,stmt=%s",ret,where);
  15.     if(ret) {
  16.         ShowLog(1,"unloadfile:err=%d,%s",ret,where);
  17.         return ret;
  18.     }
  19.     cur=_DAU.cursor;
  20.     ret=1;
  21.     num=0;
  22.     while(p=___SQL_Fetch(SQL_Connect,cur,&ret)) {
  23.         fprintf(ofd,"%sn",p);
  24.         free(p);
  25.         num+=ret;
  26.     }
  27.     DAU_free(&_DAU);//关闭游标和结果集。
  28.     ShowLog(2,"unload %s:rows=%d",tablename,num);
  29.     return 0;
  30. }
复制代码

[ 本帖最后由 yulihua49 于 2009-11-18 17:56 编辑 ]

DAU.rar

18.22 KB, 下载次数: 74

SDBC说明书.rar

43.49 KB, 下载次数: 87

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2009-11-18 19:18 |显示全部楼层
看看 ^_^

论坛徽章:
0
发表于 2009-11-18 23:58 |显示全部楼层

回复 #73 yulihua49 的帖子

是读不是写,写的性能提的很高比较困难.

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
发表于 2009-11-19 10:47 |显示全部楼层
原帖由 system888net 于 2009-11-18 23:58 发表
是读不是写,写的性能提的很高比较困难.

写就少多了,大约5000-6000吧,达到sqlldr的83%。

论坛徽章:
0
发表于 2009-11-19 17:18 |显示全部楼层

回复 #4 BetonArmEE 的帖子

是否考虑用异步的方式

不太明白银行的交易系统为什么都没有采用成熟中间件产品,CICS/TUXEDO这类。

[ 本帖最后由 alloney 于 2009-11-19 17:46 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2009-11-19 22:58 |显示全部楼层
异步IO是否会增加很多设计复杂度

CICS/TUXEDO都有这样那样的问题,定制的最好,公司的该行业成熟产品优先考虑

[ 本帖最后由 BetonArmEE 于 2009-11-19 23:15 编辑 ]

论坛徽章:
0
发表于 2009-11-20 10:48 |显示全部楼层
多进程模型超高并发, 看看 telnet://ptt.cc 这个老的BBS, 峰时有15万在线, 也就是15万个进程在一台服务器上.

一点也不卡, 调度很流畅啊.

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2009-11-20 23:31 |显示全部楼层
原帖由 hightman 于 2009-11-20 10:48 发表
多进程模型超高并发, 看看 telnet://ptt.cc 这个老的BBS, 峰时有15万在线, 也就是15万个进程在一台服务器上.

一点也不卡, 调度很流畅啊.


能谈谈ptt.cc的多进程模型超高并发框架和内部结构吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP