Nginx /反向代理/加载balencer有什么能帮助减少数据库的负载?

时间:2016-04-15 16:29:38

标签: nginx architecture oracle10g load-balancing

我们有两台商用服务器运行我们所有的100多个应用程序,我们j是一种高可用性的商店,请求和响应通常在1秒到2/3分钟之间,因为有大量数据需要对每个请求进行处理。现在有一天,not上的负载有所增加,我们无法添加更多服务器,因为负载不在服务器上,但在数据库上,我们计划添加智能负载均衡器,如Nginx。但是从nginx网站的文档中,我得到的信息非常少。

我们已经调整了服务器上的最大线程,池中的最大连接数等,但是,这不是一个有效的解决方案,因为并非所有数据库请求都需要花费大量时间/ cpu,因此减少线程/池大小不是一个去。

在我们的情况下,请求可以等到处理在第一个到达的请求上成功完成,然后可以稍后处理剩余的请求。

如果负载均衡器上有很多负载,Nginx可以帮助我们等待请求吗?这很聪明吗?

我们想到的其他选项是将来使用memcache,memsql,但是我们的数据是由Oracle的专有软件插入的,因此,它直接写入数据库,所以,这是一项正在进行的工作,看看是否它适用于我们的商店。

1 个答案:

答案 0 :(得分:1)

您可以采取多种方法:

  1. 缓存。如果查询重复,请保留查询结果的副本。可以在数据库,数据库和应用程序之间,用户的浏览器等中完成。
  2. 优化。尝试通过添加索引,更改结构化方式等来加快查询速度。
  3. 队列。等到上一个查询可用。
  4. 你想要使用3,但关于队列的事情是,如果进入速度比退出速度快,那么你得到的就是无限队列。没有什么好玩的。与1和2一起使用可能会更有帮助。