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

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

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

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

Rei 回复

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

3 楼 已删除

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

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

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

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

内存满了吧

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

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

Rei 回复

用的 nginx。

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

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