最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

焦点要闻:服务器集群使用过程中遇到的一些问题

来源:博客园

自己参与开发的项目,在测试环境只有一台服务器,每次部署的时候只需要部署

单台服务器。可是生产环境则不一样,生产环境部署了10台左右的应用服务,跑起来


(相关资料图)

的效果和单台服务器不太一样。就好比开展工作的时候,对于重要的工作,一个人

可以做,五个人,十个人也可以同时做。这时就需要管理人员合理地去分配任务,

让大家一起高效地完全一件工作。

问题一:定时任务执行频率过高。

单台服务器执行某一个定时任务可能是1分钟执行一次,可是多台服务器同时在跑,

那理论上1分钟就可以执行6次。由于项目中没有独立的定时任务项目,因此使用了

很多的定时执行任务在连续不断地运行。单台服务器设置这些定时任务的频率,在生产

上面就不可行,如何解决这个问题呢?

解决方案:首先是增大执行的时间间隔,比如以前是1分钟执行一次,现在改为两分钟

或者三分钟执行一次。这样修改之后,还可能出现多台服务器在同一时间执行定时任务的

情况,因此就需要在进一步的优化。每次执行完一次任务之后,向缓存中添加一个最新

执行的时间。当某一台服务器再次执行定时任务的时候,从缓存当中取出最近一次的执行

时间,然后计算和当前时间的差值,如果小于指定的时间比如说2分钟,则不执行。如果

大于指定时间2分钟,则执行。这样就可以很好地解决高频率执行定时任务的问题。

问题二:某些服务配置的实例过多。

比如项目启动的时候,配置MQ消费的实例数,还有其他多线程任务的实例个数。单台

服务器可能配置三四个或者是20个不等。可是当多台服务器在跑的时候,就不能使用原有

的方式,比如20*8=160个实例,这样会大大地降低服务器的性能,虽然是多台也会降低性能。

那么怎么解决呢?

解决方案:调整每一台服务器中某些服务的初始化实例个数。比如将原有实例个数为20的修改

为3个,这样3*8=24个实例。并且这24个实例是分散在8台服务器上面的,处理的效率也会比

单台配置20个实例高很多。

问题三:数据库性能跟不上。

项目上线之后,还没有大规模的使用,在早高峰的时候一个接口的请求量预估在15W到20W。

除了用户的请求之外,还有高频率的数据库写操作,因为服务器在消费MQ的消息,高峰期时每

个小时约有几十万的数据写入表中,给数据库服务器造成了很大的压力。那么如何解决这个问题呢?

解决方案:终极方案是切换数据库,项目中有主从数据库,就类似于备用数据库。最终经过排查,

主库的服务器存在问题,因此切换到备用数据库,服务器的压力小很多。其次是减少和数据库的

交互次数,做各种优化,比如能从缓存中取数据,就不从数据库中拿。能操作两次数据库就搞定

的功能,决不操作三次数据库。这就涉及到多方面的性能优化问题,需要遇到问题的时候具体分析,

然后制定合适的应对方案。

系统开发是一个非常复杂的过程,在这个过程中会遇到各种各样想象不到的困难和问题,但是

解决问题的方式也是多种多样。而且有些解决方案是不能复用的,需要具体问题具体分析。这就

非常考验一个开发人员解决实际问题的能力,而且需要快速拿出可行的解决方案。在项目开发

设计的时候,就开始考虑各种性能问题,会让后面少走很多弯路。

关键词: 定时任务 解决方案 服务器的