Nginx/reverse-proxy/load-balencer可以帮助减少数据库的负载



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

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

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

如果两个负载均衡器上都有很多负载,Nginx能帮助我们等待请求吗?它聪明吗?

我们考虑的其他选择是在未来使用memcache、memsql,但我们的数据是由Oracle的专有软件插入的,所以,它直接写入数据库,所以,这是一项并行的工作,看看它是否适用于我们的商店。

您可以采用多种方法:

  1. 缓存。如果查询是重复的,请保留查询结果的副本。可以在数据库中、数据库和应用程序之间、用户浏览器中等进行
  2. 优化。尝试通过添加索引、更改它们的结构方式等来加快查询速度
  3. 排队。等待上一个查询可用

你想选择3,但队列的问题是,如果进入的速率比退出的速率快,那么你得到的是一个无限的队列。没有乐趣。选择1和2可能会更有帮助。

最新更新