什么是多线程并发服务器

什么是多线程并发服务器,第1张

有多个 CPU 可用。单核机器上多线程的优势不明显。

线程间有共享数据。如果没有共享数据,用模型 3b 就行。虽然我们应该把线程间的共享数据降到最低,但不代表没有;

共享的数据是可以修改的,而不是静态的常量表。如果数据不能修改,那么可以在进程间用 shared memory,模式 3 就能胜任;

提供非均质的服务。即,事件的响应有优先级差异,我们可以用专门的线程来处理优先级高的事件。防止优先级反转;

latency 和 throughput 同样重要,不是逻辑简单的 IO bound 或 CPU bound 程序;

利用异步操作。比如 logging。无论往磁盘写 log file,还是往 log server 发送消息都不应该阻塞 critical path;

能 scale up。一个好的多线程程序应该能享受增加 CPU 数目带来的好处,目前主流是 8 核,很快就会用到 16 核的机器了。

具有可预测的性能。随着负载增加,性能缓慢下降,超过某个临界点之后急速下降。线程数目一般不随负载变化。

多线程能有效地划分责任与功能,让每个线程的逻辑比较简单,任务单一,便于编码。而不是把所有逻辑都塞到一个 event loop 里,就像 Win32 SDK 程序那样。

1.多进程并发服务器

是指TCP连接后,每一个客户机的请求并不由服务器直接处理,而是由服务器创建一个子进程来处理

2.多线程并发服务器

多进程服务器是对多进程的服务器的改进,由于多进程服务器在创建进程时要消耗较大的系统资源,所以用线程来取代进程,这样服务处理程序可以较快的创建。据统计,创建线程于创建进程要快10100倍,所以又把线程称为“轻量级”进程。进程与进程不同的是:一个进程内所有线程共享相同的全局内存,全局变量等信息。

是指TCP连接后,每一个客户机的请求并不由服务器直接处理,而是由服务器创

3.多路复用I/O

I/O是为了解决线程/进程阻塞在那个I/O调用中,常用select或者pool

并发的意思是指网站在同一时间访问的人数,人数越大,瞬间带宽要求更高。服务器并发量分为:1.业务并发用户数;2.最大并发访问数;3.系统用户数;4.同时在线用户数;

说明服务器实际压力,能承受的最大并发访问数,既取决于业务并发用户数,还取决于用户的业务场景,这些可以通过对服务器日志的分析得到。

一般只需要分析出典型业务(用户常用,最关注的业务操作)

给出一个估算业务并发用户数的公式(测试人员一般只关心业务并发用户数)

C=nL/T

C^=C+3×(C的平方根)

C是平均的业务并发用户数、n是login session的数量、L是login session的平均长度、T是指考察的时间段长度、C^是指业务并发用户数的峰值。

假设OA系统有1000用户,每天400个用户发访问,每个登录到退出平均时间2小时,在1天时间内用户只在8小时内使用该系统。

C=400×2/8=100

C^=100+3×(100的平方根)=100+3×10=130

另外,如果知道平均每个用户发出的请求数u,则系统吞吐量可以估算为u×C

精确估算,还要考虑用户业务操作存在一定的时间集中性(比如上班后1小时内是OA系统高峰期),采用公式计算仍然会存在偏差。

285-104-1346


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/732132.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-11
下一篇2023-08-11

发表评论

登录后才能评论

评论列表(0条)

    保存