当你不确定问题出在哪里时,如何解决轻微的数据库扩展问题
这是对dev.to过去一天遇到的宕机情况的简要回顾。
我在调查此问题的过程中发布了这条消息:
如何处理 ActiveRecord::StatementInvalid 和 PG::QueryCanceled?
Ben Halpern ・ 2018年7月18日
#求助 #PostgreSQL #Rails
Rhymes 的回应方向是对的。
最终发现问题在于,我们托管的 Postgres 服务计划的连接数会周期性地超过最大限制。难点在于,连接数会先达到峰值,然后自行恢复正常,而在此期间,我们却只关注查询效率,忽略了一些关键信号。
我们当前套餐的大部分流量都远低于限额,而且当我们检查当前连接时,当时看起来也并非问题所在。
展望未来,我们需要更好地监控和了解各项服务的瓶颈所在。这次的情况是,我们一开始实施了一些措施,但很快就放弃了,结果问题开始出现时,我们却被一些误导性的因素打了个措手不及。
每一次经历都是一次巨大的学习机会,我对我和我的团队处理我们所面临的这些适度的数据库扩展问题的能力更有信心了。
我说“不算复杂”,是因为就我们目前的规模而言,情况相当简单,我们只需要找出问题所在。最糟糕的情况是,我们误以为需要对数据进行任何特殊处理。我们未来不会进行分片或特殊的数据库管理,只是会更加注重系统监控。
文章来源:https://dev.to/ben/on-chasing-down-modest-database-scaling-issues-when-youre-not-sure-whats-going-on-a-devto-retro-29l1
dev.to 目前使用的是 Heroku 的哪个方案?看起来似乎与 Heroku 的 Postgres 负载均衡器有关。
你有没有尝试调查一下
SELECT * FROM pg_stat_activity这种情况发生的时间?以下是该表的详细信息:postgresql.org/docs/10/static/moni...
不过我想,如果网络连接中断,也就没有时间进行调查了……