新手问题 ActiveRecord 取大数据的问题

a886937 · 2019年06月14日 · 最后由 a886937 回复于 2019年06月14日 · 1355 次阅读

我使用的 rails4 用 ActiveRecord 取较大数据的时候,在等待的过程中,整个站点都会卡死,任何页面接口都无法访问。额。请求不是多线程的吗,一方面数据大还会影响其他不取数据的页面吗? 另外我用的是 ms sqlserver 2008,借助了 gem activerecord-sqlserver-adapte。 各位大佬有什么好的解决方案吗,先谢谢各位。

App server 的设置?用了多进程或多线程吗?

Rei #0 回复

1.没有设置,可以指点下怎么设置吗 2.是指写异步代码吗? 谢谢你的回复

2 楼 已删除

首先要弄清楚什么地方卡,最好给个服务器的结构图

取较大数据的时候,可以考虑看看下面这些

  1. 看看数据库服务器的内存,CPU,磁盘等使用情况
  2. 看看 APP 服务器的内存,CPU,磁盘等使用情况
a886937 #1 回复

怎么部署的?用了 puma 还是什么?

内存满了吧

  1. 直接看服务器运行情况,CPU,内存和负载
  2. 打开日志的 debug 模式看下操作日志,看哪里卡
  3. 打开数据库,查看当前执行耗时最长的语句
  4. nginx 配置是不是调配到与服务器相对最优的参数了,如内核数量与进程数,内存容量等

分析完,差不多就是调参数,优化语句,添加索引,提升服务器配置等

Rei #4 回复

用的 nginx。

感谢各位的回答,我怀疑也是内存原因,我一个 1 核 2g 的服务器,跑了 7,8 个站点。而且其中大部分都比较吃内存。明天我排查一下。

a886937 关闭了讨论。 03月06日 17:55
需要 登录 后方可回复, 如果你还没有账号请 注册新账号