qq_37681837 2018-10-31 09:57 采纳率: 100%
浏览 1331
已采纳

为什么七台服务器可容纳并发量不如一台

我做一个微信的小程序,秒并发量有1万左右,用了7台服务器,但是7台同时运行可以容纳的并发量反而不如一台的,这是为什么,一台服务器可以承受1~2千的并发量,7台应该刚刚好的。
用nginx做转发,等于反向代理。所有的请求都请求这一台nginx主机,有nginx平均分发给7台应用。压测1台服务器没有问题,压测多台时出现timeout
为什么会出现上述的情况呢?请各位大神指教,确认解决2000C奉上

  • 写回答

3条回答 默认 最新

  • qq_37681837 2019-01-15 14:27
    关注

    只是一个参数配置问题,已经找到并解决了,并不是没有规划好,也不是优化的问题

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • threenewbee 2018-10-31 10:12
    关注

    首先,性能的瓶颈在哪里,是不是服务器的运算能力,还是别的地方?比如说火车站有大量旅客滞留,并不一定是火车车皮不够,也可能是铁路饱和了,没法加开火车,导致车皮放在车站走不了。
    你如果网络带宽不足,服务器多,但是它们都是空转。你可以看下每个服务器的硬件占用情况。windows服务器可以用任务管理器,linux可以用top去看。

    其次,你的并发架构是如何,你7个服务器是做应用层的负载均衡还是数据层的,有没有配置对,负载均衡是不是把请求分摊到所有的服务器上去了。

    再其次,并非7个服务器就一定等于一个服务器的7倍。不能这么简单换算的。因为总有一些操作必须事务化,并且同步,不能并发执行。

    还有,你是不是使用了高可用的方案,那些方案会将同样的操作放在不同服务器上做镜像冗余,一个服务器失效,服务不会中断,但是它不是为了提高性能而做的。冗余并不能发挥性能效应出来。

    最后,还要看你是怎么测试的并发,你的测试本身有没有问题,是否科学,你的运营商有没有限制,等等。

    评论
  • 玄尺 2018-10-31 12:17
    关注

    应用服务器本身不会出现问题,所以当前果断怀疑数据库出现瓶颈,一秒钟并发了1W,这个数据量落到单机估计数据库就差不多要死了。和你说的现象很相似,七台服务器提供的能力和一台差不多。
    建议:
    1、给数据库添加监控
    2、数据库分库分表,如果你们的业务是读多写少的场景,建议使用maxscale中间件进行读写分离,这个中间件我们在生产环境上用,效果还可以。或者直接把数据库换成mongo、tidb
    3、sql优化,索引是否到位,单表容量是否到上限了,数据冷热分离
    4、业务逻辑中一部分逻辑异步化,比如更新状态等更新数据库操作异步化。我这里提一种方案将变更信息打印到日志,然后从日志中使用ELK进行处理更新数据库

    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 利用加权最小二乘法求亚马逊各类商品的价格指标?怎么求?
  • ¥15 c++ word自动化,为什么可用接口是空的?
  • ¥15 Matlab计算100000*100000的矩阵运算问题:
  • ¥50 VB6.0如何识别粘连的不规则的数字图片验证码
  • ¥16 需要完整的这份订单所有的代码,可以加钱
  • ¥30 写一个带界面控制的机房电脑一键开机关机并且实时监控的软件
  • ¥15 Stata数据分析请教
  • ¥15 请教如何为VS2022搭建 Debug|win32的openCV环境?
  • ¥15 关于#c++#的问题:c++如何使用websocketpp实现websocket接口调用,求示例代码和相关资料
  • ¥15 51单片机的外部中断,按下按键后不能切换到另一个模式