【发布时间】:2015-12-11 14:12:24
【问题描述】:
我们在 Elastic Beanstalk 上运行一个 servlet,我们连接到 ElastiCache,它运行得相当好,但现在我们在高峰期获得了高 CPU 负载 (50%),并且正在考虑对其进行优化。
目前我们正在像这样使用 Jedis:
try (Jedis jedis = new Jedis(Global.CLUSTER_ENDPOINT, 6379, 10000);) {
jedis.hset(f.dayOfFile, "content", f.xmlFile);
}
我们遇到的一个问题是活动连接数突然上升到 8400 并且没有下降。似乎没有任何影响,但仍然想知道它是如何达到如此高的水平以及这是否会影响性能。
所以我的问题是:
- 我们是否应该使用另一个看起来更好维护的库,例如 lettuce (https://github.com/mp911de/lettuce)?
- 或者我们应该使用连接池?我们每天有数百万个请求,所以如果这会引入池中的最大连接数等其他问题,我们有点害怕切换到连接池?
- 或者还有什么我们应该调整的?
【问题讨论】:
-
您可以尝试#2 [在某些测试环境中],而不是害怕它。拥有一个未绑定(非 poopled)的连接数对我来说似乎是个坏主意。或者你也有无限量的
new Thread()s? -
@zapl 模拟 300 万用户以确保它在高峰期不会失败有点困难。但如果这是推荐的设置方式,我会更改它并查看一些规模测试解决方案以确保它按预期工作。
-
是的,这很难。但是,如果您不想长期陷入大量没人想再次接触的代码中,则需要一种预先验证更改的方法(以及一种紧急回滚的方法)。不幸的是,据我所知,Beanstalk 没有像 programmableweb.com/news/… 这样的版本的 A/B 测试等功能,但您应该能够在负载均衡器级别执行类似的操作。还有一些负载测试服务和框架。
标签: java redis amazon-elastic-beanstalk jedis amazon-elasticache