当前位置

Drupal网站数据库堵塞、Memcache失效的排查

James Qi 在 2019年5月30日 - 17:01 提交

  今天同事反映网站打开巨慢无比,查看阿里云ECS Web服务器正常,而RDS MySQL数据库服务器有堵塞,都是被下面类似语句链接:

SELECT s.source, s.context, t.translation, t.language
FROM mingluji_gongshang.locales_source s
LEFT JOIN mingluji_gongshang.locales_target t
ON s.lid = t.lid AND t.language = 'zh-hans'
WHERE s.textgroup = 'default' AND s.version = '7.67' AND LENGTH(s.source) < '75'

  屏蔽了很多爬虫,但依然没有缓解,打开Devel发现一个正常页面本来只有30个SQL查询的,现在变成了250个,其中220个都是上面这种一样的语句,明显是缓存没有起到作用。

  在Linux下运行service memcached status,返回memcached (pid  22984) is running...,说明memcached还在运行中,但以前也遇到过memcached显示状态正常,而不能起作用的问题,于是重启memcached服务:

service memcached restart
Stopping memcached:                                        [  OK  ]
Starting memcached:                                        [  OK  ]

  重启后,刷新Drupal站页面,只剩下大约30个SQL查询,再去看RDS后台,MySQL进程再无堆积,问题解决了。👌

  这种问题遇到不止一次了,都是memcached运行很多天以后才会发生,例如这次重启前memcached已经运行了2个月多,以后考虑设置crontab把memcached定时重启。

memcached

  memcached确实不太稳定,今天又发现有一台服务器上的一个站点巡检中报错,重启memcached不成功,显示

service memcached restart
Stopping memcached:                                        [FAILED]
Starting memcached:                                        [  OK  ]

  只有用ps -ef|grep memcached找出来kill掉,然后再用service memcached restart重启:

ps -ef|grep memcached
496       2478     1  2 03:04 ?        00:29:00 memcached -U 0 -d -l 127.0.0.1 -p 11211 -u memcached -m 2048 -c 1024 -P /var/run/memcached/memcached.pid
kill 2478
kill 2478
bash: kill: (2478) - No such process

  这种问题不是第一次出现了,其它服务器、其它站点也都出现过。

  干脆在所有服务器的/etc/crontab中都设置了一句:

03 03 * * 0 root service memcached restart

  每台服务器上的memcached都在周日凌晨3点3分重启,看这样是否可以大幅降低memcached出问题的机率。

评论

添加新评论

Plain text

  • 不允许使用HTML标签。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。