php-fpm – Redis服务器高CPU调试策略

前端之家收集整理的这篇文章主要介绍了php-fpm – Redis服务器高CPU调试策略前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
最近,我们注意到redis引起的生产环境cpu峰值,如下所示:

为了解决这个问题,我每天大约两次重启redis服务器:(这显然远非理想.我想确定根本原因.

以下是我目前研究过的一些事情:
1)查看redis日志文件中的任何异常.以下似乎是可疑的:

2)研究了Nginx访问日志,看看我们是否遇到异常高的流量.答案是不.

3)New Relic透露,该问题始于11月21日,16日(约一个月前),但当时没有发布任何代码.

以下是有关我们设置的一些细节:

Redis服务器:Redis服务器v = 2.8.17 sha = 00000000:0 malloc = jemalloc-3.6.0 bits = 64 build = 64a9cf396cbcc4c7

PHP:5.3.27,带fpm

Redis配置:

daemonize yes
pidfile /var/run/redis/redis.pid
port 6379
timeout 0
tcp-keepalive 0
loglevel notice
logfile /var/log/redis/redis.log
syslog-enabled yes
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error no
rdbcompression yes
rdbchecksum yes
dbfilename redis.rdb
dir /var/lib/redis/
slave-serve-stale-data yes
slave-read-only yes
repl-disable-tcp-nodelay no
slave-priority 100
maxmemory 15GB
appendonly no
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
lua-time-limit 5000
slowlog-max-len 128
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
include /etc/redis/conf.d/local.conf

框架:Magento 1.7.2与Cm_Cache_Backend_Redis

如果有上述信息,请告诉我,我可以做些什么来减轻高cpu使用率.

非常重要的更新:

您的服务器可能已被黑客入侵.这不是导致高cpu使用率的redis,而是一个名为yam的单独命令(看看你的htop的最右边,我第一次错过了它). yam命令用于众所周知的redis漏洞利用程序,并且经常导致高cpu使用率.您需要仔细检查以确保您的服务器是安全的.

如果您想了解有关漏洞以及如何保护自己的更多信息,请参阅以下文章链接

> https://gist.github.com/lokielse/d4e62ae1bb2d5da50ec04aadccc6edf1(示例女士黑客脚本,在评论中你可以看到原始版本下载山药的位置)
> https://translate.google.com/translate?hl=en&sl=zh-CN&u=http://www.zkreading.com/article/879816.html&prev=search(关于利用及其如何利用的中文文章的翻译)
> https://translate.google.com/translate?hl=en&sl=zh-CN&u=http://blog.csdn.net/u012573259/article/details/51803447&prev=search(另一篇中文帖子更侧重于后续步骤和清理)
> http://antirez.com/news/96一篇关于redis安全性的自称博客文章,描述了可能成为进入OP服务器的入侵源的入侵手段
> https://www.riskbasedsecurity.com/2016/07/redis-over-6000-installations-compromised/(概述了redis安全性差的服务器数量)
> https://news.ycombinator.com/item?id=13053647(一个报道黑客比特币风味的主题)

这是我的magento / redis,呃,性能问题清单:

>确保你使用的是redis的新版本,比如3.2,如果在CentOS上,我个人更喜欢来自IUS存储库的redis32u.
>检查redis数据库的大小,它应该在/ var / lib / redis中,并确保它相对较小.
>确认您有足够的ram用于redis.你已经指定了一个15GB的最大存储数,这对于magento来说真的太过分了.我通常使用接近256mb的东西.如果你使用redis那么多(!!!!!!),你的magento堆栈可能还有其他问题.
>确保在syscntl中设置了vm overcommit设置. https://redis.io/topics/admin(有关您需要的更多详情,请参阅此链接)
>确保您有足够的打开文件限制来处理与redis的连接数.

一般来说,日志文件不可疑,因为你的redis保存设置告诉redis每隔一分钟就会保存,如果有> 10000写,如果有的话,每隔五分钟> 10次​​写入,如果有> 15分钟,则每15分钟写入1写.所以它基本上每分钟都会将信息保存回磁盘,这不应该是那么繁琐.

原文链接:https://www.f2er.com/php/139033.html

猜你在找的PHP相关文章