AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 820308
Accepted
dipole_moment
dipole_moment
Asked: 2016-12-13 12:49:52 +0800 CST2016-12-13 12:49:52 +0800 CST 2016-12-13 12:49:52 +0800 CST

Redis服务器高cpu调试策略

  • 772

最近,我们注意到由 redis 引起的生产环境中的 CPU 峰值,如下所示:

在此处输入图像描述

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

到目前为止,我已经研究过以下一些事情:
1) 查看 redis 日志文件中的任何异常情况。以下似乎是可疑的:

在此处输入图像描述

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

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

以下是有关我们设置的一些详细信息:

Redis 服务器: Redis server 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

框架:带有 Cm_Cache_Backend_Redis 的 Magento 1.7.2

如果给出上述信息,请告诉我是否可以采取任何措施来减轻 CPU 的高使用率。

cache magento php-fpm redis cpu-usage
  • 1 1 个回答
  • 3497 Views

1 个回答

  • Voted
  1. Best Answer
    2ps
    2016-12-14T20:39:21+08:002016-12-14T20:39:21+08:00

    非常重要的更新:

    您的服务器可能已被黑客入侵。导致 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 的清单,呃,性能问题:

    1. 确保您使用的是新版本的 redis,例如 3.2,如果在 CentOS 上,我个人更喜欢 IUS 存储库中的 redis32u。
    2. 检查你的redis数据库的大小,它应该在 中/var/lib/redis,并确保它相对较小。
    3. 验证您是否有足够的内存用于 redis。您已经指定了maxmemory15GB 的大小,这对于 magento 来说实在是太过分了。我通常使用更接近256mb. 如果您使用 redis 那么多(!!!!!!),您的 magento 堆栈中可能还有其他问题。
    4. 确保在 syscntl 中设置了 vm overcommit 设置。 https://redis.io/topics/admin(有关您需要的更多详细信息,请参阅此链接)
    5. 确保您有足够的打开文件限制来处理与 redis 的连接数。

    一般来说,日志文件并不可疑,因为您的 redis 保存设置告诉 redis 如果写入 > 10000 次,则每分钟保存一次,如果写入次数 > 10 次,则每五分钟一次,如果写入次数 > 1 次,则每 15 分钟一次写。所以它本质上是每分钟将信息持久化回磁盘,这不应该是那么繁重。

    • 3

相关问题

  • 缩放大文件下载?

  • Gzip 与反向代理缓存

  • 如何禁用tomcat缓存?我遇到了奇怪的静态文件问题

  • mod_mem_cache 提供错误的内容!

  • NFS 缓存导致间歇性滞后

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve