我发现我的 Rails 应用时不时的在 COMMIT 的时候会使用很长的时间完成,
samples 不是从应用同一个地方发生的,因此判断应该是 MySQL 数据库的问题吧
看起来很随机,平均分配在不同的写入点。
有人遇过这个问题吗?
监控一下数据库的 io 是不是瓶颈,特别是 io wait 值。
还有可能是 mysql 的 query cache 设置不正确导致 commit 的时候,需要清理过多的 query cache。 show variables like 'query_cache%'; show global status like 'Qc%';
#6 楼 @yedingding INSERT 也会出现 >2000ms 的状况,比如 newrelic 记录了这个画了 ~2700ms。
INSERT INTO orders
(account_id
, address1
, book_id
, created_at
, final_amount
, notes
, paid_at
, partner_id
, payment_method
, phone
, quantity
, receiver_name
, region1
, region2
, region3
, shipping_no
, state
, taobao_account
, token
, type
, updated_at
) VALUES (?, NULL, NULL, ?, NULL, NULL, NULL, NULL, ?, NULL, ?, NULL, NULL, NULL, NULL, NULL, ?, NULL, ?, ?,?,?)
应该和 query 本身没太大关系。
@quakewang 我们现在也部署在 ucloud 上。你知道 disk io 的瓶颈大概在哪里吗?我看了一些实时数据,有时候 mysql 写入会持续两三秒,达到每秒精度接近 2000kB 峰值
如果业务上没有规律,感觉可能压力,top 看一下发生的时候的压力大不大,如果很小,可能是配置,比如连接数,操作并发数什么的,mysql 不知道有没有,postgresql 是有的
还有就是可能是应用设置的连接数