为了解决这个问题,我每天大约两次重启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写.所以它基本上每分钟都会将信息保存回磁盘,这不应该是那么繁琐.