我目前正在使用AWS基础设施来承载我的移动web应用程序。我使用Apache,mod_jk将请求传递给Tomcat,后者使用连接池进一步与MySQL DB通信。最近,服务器的响应一直很慢。原因之一是请求(LocationUpdate)被所有在15分钟间隔内随机访问应用程序的用户所命中。我认为这是减慢服务器速度的原因。另一个原因是我们也有很多用户。我在想怎么平衡这个。
所以不知道我该怎么处理。要确认的配置设置。我确实在网上搜索过,但不知道该如何解决这个问题。我应该增加Tomcat堆的大小吗?
发布于 2015-01-15 11:18:17
首先,您需要重新考虑,您的应用程序是否真的需要“打电话回家”每15分钟!这使得burdon不仅在您的服务器上,而且在移动网络上,在人们的电话和他们的数据账单上。特别是,如果这是一个位置更新,应用程序可能被编程不发送该位置的更新,如果GPS坐标的变化从上次转移更新是很小的。
其次,你必须调试,是什么驱动了你的web服务器上的负载。使用top显示加载详细信息。特别令人感兴趣的是这条线:
Cpu(s): 3.0%us, 6.0%sy, 1.6%ni, 85.9%id, 0.4%wa, 0.0%hi, 3.0%si, 0.0%st这是来自一个负载较轻的服务器,即86%的空闲--所以在我的示例中一切都很好。在您的示例中,它可能如下所示:
Cpu(s): 3.0%us, 6.0%sy, 1.6%ni, 4.9%id, 81.4%wa, 0.0%hi, 3.0%si, 0.0%st外挂的“等待”意味着您的作业正在等待磁盘完成读取或写入数据。如果您有这个问题,那么尝试减少不必要的写入磁盘(谷歌为noatime了解更多),并尝试降低您的数据库的写入安全级别,在那里这样做是安全的。例如,如果在发生电源故障时没有将位置更新正确写入磁盘,则对您的服务的影响可能很小,就像当时一样,在修复失败的组件后恢复电源,这些位置无论如何都会过时。另一方面,如果新用户注册了,您希望将这些对主帐户数据的写入保持为同步,这样就不会因为电源或服务器故障而丢失帐户。
即使在这些更改之后,等待时间也很长,那么在考虑负载平衡之前,考虑一下更快的磁盘:带有两个甚至三个磁盘的RAID 1或SSD。
如果您的负载线如下所示:
Cpu(s): 43.0%us, 42.0%sy, 1.6%ni, 4.9%id, 5.4%wa, 0.0%hi, 3.0%si, 0.0%st由于几乎所有的CPU时间都花在userland (us)和系统模式(us)上,那么CPU就会超载。检查顶部输出中标题下面的行,找出哪些服务(如apache2、tomcat、MySQL)具有较高的cpu负载。然后优化您的web应用程序,以减少cpu的使用。如果这没有帮助,那么向服务器添加更多的cpu核心。
最后,但并非最不重要的是,使用free检查您的内存。如果使用了很大比例的内存,或者交换超过几千字节,则添加更多的内存。
https://serverfault.com/questions/659686
复制相似问题