作者sunfox (野兽派的绅士)
看板LinuxDev
标题[问题] 大量连线数如何降低I/O 提升传输速度
时间Thu May 2 17:43:06 2019
提供服务的主机 会跑很多数据出来
外网 client端(windows ) 执行连线程式
向提供服务主机发出连线需求...
主机会启动一只程式供client 建立连线
连线建立後 主机就开始透过Socket主动且持续的传送数据到外网 windows client
如果外网有一千个client端要连线
主机上同样的程式会执行一千只
最近在检讨这样的系统是不是能有更好的设计
因为系统会花时间在程式的start 与 stop
如果说 外网client的的程式有50000只
在三个小时的时间内 都一直有client 程式 上上下下 (执行与关闭)
这样在IO 上与建立连线时 会浪费很多时间与机器的效能
要怎样去改写这样的架构
让速度变快 时间变短 效能更好
我想到的是 如 FTP
1000个人连FTP server FTP程式也不会跑1000只啊
apache 也是
谁能给我一个方向与概念
谢谢
PS 主机端的连线程式是C写的
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 119.14.67.114
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1556790188.A.4B6.html
1F:→ tjjh89017: Event driven的方式? 05/02 18:00
2F:→ ckvir: 好奇的问一下 一般 server 不是都开一个process 等client, 05/05 04:52
3F:→ ckvir: 为什麽会写成只要有client 就开一个process? 05/05 04:52
4F:→ ckvir: 不是应该一个process等client ,有 client 再开thread? 05/05 04:55
5F:推 tjjh89017: 开跟关process的成本都很高,所以有时候会先开起来放, 05/06 03:41
6F:→ tjjh89017: 有些则是一个thread负责很多client 05/06 03:41
7F:→ leolarrel: 参考apache 的设计 05/11 12:02
8F:推 dces4212: threadpool 05/13 00:58
9F:→ wens: 这不是经典题目吗? C10K 05/14 00:04
10F:→ shooter555: 没写过大量连线的service 好奇问一下 threads不会爆吗 05/22 16:11
11F:→ shooter555: 不是有数量上限在同一只process内 05/22 16:11
12F:→ shooter555: 喔喔 查了一下c10k linux就是用epoll 05/22 16:19
13F:→ WPC001: threadpool +1 05/22 21:30
14F:→ wens: 一直开关 thread 也是有成本的 06/04 14:19
15F:→ dennisxkimo: 这种需求个人服务会想走WebService,提供Client API 06/07 23:13