如何提高SOCKET的并发接受连接速度
1个回答
展开全部
不知道你用啥语言,网络并发有两种模式:
老的模式,多进程,新程序大多都不会采用这种方式;
多线程,现代程序,大多采用这种方式。
socket,如果只是链接进来,一个链接启动一个线程,有专门的服务进程循环等待。高效的实现,有链接到达,比如TCP通讯完成3路握手过程,操作系统,就会把链接放到待处理队列,通知服务进程处理。
而操作系统的未完成链接队列+在处理链接队列是有上限的,这个上限值不确定,根据操作系统不同,可以用程序动态监测到。
因此,如果操作系统链接队列已满,接受不了新的请求的。一般返回错误是connection refused。
想要快速处理并发链接,编程角度考虑:
第一要求计算机接受请求要快,一般就采取多线程,服务线程,只负责,启动新的业务线程,立马接受下一次请求。
第二为了防止connection refused错误发生,业务处理逻辑代码设计要尽量的快。
第三条,做系统架构设计,再要根据不同的业务量选择适合的硬件,理论上配置越高越好,一般预算有限的,可以根据业务量提前测算个大概。买配置比测算量高一些的设备即可。一般系统设计,要考虑业务的增长。怎么测算,需要经验。
业务量大机器配置好,壮牛拉破车是不行的。设计得再好的架构,写得再好的代码。没有适合的机器。效果达不到期望值的。
老的模式,多进程,新程序大多都不会采用这种方式;
多线程,现代程序,大多采用这种方式。
socket,如果只是链接进来,一个链接启动一个线程,有专门的服务进程循环等待。高效的实现,有链接到达,比如TCP通讯完成3路握手过程,操作系统,就会把链接放到待处理队列,通知服务进程处理。
而操作系统的未完成链接队列+在处理链接队列是有上限的,这个上限值不确定,根据操作系统不同,可以用程序动态监测到。
因此,如果操作系统链接队列已满,接受不了新的请求的。一般返回错误是connection refused。
想要快速处理并发链接,编程角度考虑:
第一要求计算机接受请求要快,一般就采取多线程,服务线程,只负责,启动新的业务线程,立马接受下一次请求。
第二为了防止connection refused错误发生,业务处理逻辑代码设计要尽量的快。
第三条,做系统架构设计,再要根据不同的业务量选择适合的硬件,理论上配置越高越好,一般预算有限的,可以根据业务量提前测算个大概。买配置比测算量高一些的设备即可。一般系统设计,要考虑业务的增长。怎么测算,需要经验。
业务量大机器配置好,壮牛拉破车是不行的。设计得再好的架构,写得再好的代码。没有适合的机器。效果达不到期望值的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询