
采用多线程多核编程,使用事件驱动或异步消息机制,尽量减少阻塞和等待 *** 作(如I/O阻塞、同步等待或计时/超时等)。它的原理如下:
1,多线程多核编程,消除cpu瓶颈。
2,采用IOCP或epoll,利用状态监测和通知方式,消除网络I/O阻塞瓶颈。
3,采用事件驱动或异步消息机制,可以消除不必要的等待 *** 作。
4,如果是Linux,可以采用AIO来消除磁盘I/O阻塞瓶颈。
5,在事件驱动框架或异步消息中统一处理timer事件,变同步为异步,而且可以在一个线程处理无数timer事件。
6,深入分析外部的阻塞来源,消除它。 比如数据库查询较慢,导致服务器处理较慢,并发数上不去,这时就要优化数据库性能。
7,如果与某个其他server通信量很大,导致性能下降较多。 可以考虑把这两个server放在一个主机上,采用共享内存的方式来做IPC通信,可以大大提高性能。
亿万克作为中国战略性新兴产业领军品牌,拥有行业前沿技术,致力于新型数据中心建设,构筑云端安全数字底座,为客户提供集产品研发、生产、部署、运维于一体的服务器及IT系统解决方案业务,产品和技术完全拥有自主知识产权,为客户提供全方位安全自主可控技术服务保障。更改服务端的I/O模型吧,这明显是服务端设计的问题。
你这样设计上线使用的话,服务器开销太大了(主要是线程切换的开销)。
//--------------------
Listen(socket,5),跟这个有一定关系。
int listen(int sockfd, int backlog); 第二个参数是你监听客户端的最大个数,如连接到主机上的客户端超过其数listen则会返回一个错误代号。
backlog你可以设置大一点,如100之类的。
建议使用I/O模型吧,不要使用建立新线程来处理。
(你使用建立新线程的话,会发现每个进程所建立的最大线程数量是有一个限制的)
不同类型的网站对于服务器资源的占用情况也不一样
如果是普通的企业站或者文字为主的网站不需要做负载均衡,用一台四核至强处理器4G以上内存10M以上带宽的配置基本上就能满足
如果是较大规模或者是视频内容较多的网站,则会对服务器资源占用较高推荐用双至强八核处理器32G内存1T硬盘的配置来放数据库,然后再用几台普通四核配置的机器放网站前端来做负载均衡即可带宽需要根据你们的具体需求来决定
要说可以支持多少用户,是无法得到一个准确答案的。用户支持的数量由许多因素组成,例如使用的语言、架构、处理的业务类型 数据大小等。这是一个需要连续调整优化过程的。
第一需要确定业务类型
1、不同的服务有不同的特性,有些CPU占用比较高,有些内存比较高,还比如数据处理,有些需要大量带宽,例如网络爬虫,有些磁盘很高,例如和数据库类。
2、同一配置的机器运行不同的业务,效果会有所不同,而且未使用的资源将大大浪费。
3、根据自己的业务类型调整机器的资源比率是节省资金和改善支持的好方法。
第二确定数据大小
1、网络传输的数据大小决定了带宽占用。尺寸越小,带宽越大,每单位时间可以访问和处理的用户请求越多。
2、然后,减少无效数据传输并减小请求分组的大小是必须考虑的地方以改善用户访问能力。
第三连续测算和调整
1、支持的TPS数量,是不断监控并不断调整的。很多时候,小参数调整可以带来多重性能提升。几十秒的业务请求,可能会在几十毫秒内完成调整。
2、真正的在线服务,持续监控和持续调整是一个长期的过程的。
第四使用恰当的语言架构
1、设计良好的系统,与随便设计的系统,终端能力是全然有所不同的。
2、克服资源浪费问题,可使用Docker之类的容器化,微服务化,能精确的提高资源使用率,减少服务器压力。
3、使用Nginx或是Tengine、打开NIO、打开压缩、及设立静态与局部缓存等,减少服务器负载。
4、使用MongoDB、NoSQL数据库,减少数据查询压力提升响应速度。
总之,减少前端无效请求,后端请求在靠近用户侧解决掉,避免业务过长,堆积在后端底层。
扩展资料:
1、服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。
2、服务器的构成包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
3、在网络环境下,根据服务器提供的服务类型不同,分为文件服务器、数据库服务器、应用程序服务器、WEB服务器等。
参考资料来源:百度百科–服务器
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)