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 / 问题 / 562244
Accepted
Pentium10
Pentium10
Asked: 2013-12-19 09:07:08 +0800 CST2013-12-19 09:07:08 +0800 CST 2013-12-19 09:07:08 +0800 CST

通过 php-fpm/nginx 使用图像处理时减少系统负载

  • 772

我们有一个基于 imagemagic 的用 Code Igniter 编写的 PHP 图像 api。我们有 nginx/php-fpm 后面的 api。我们知道 Imagemagic 部分很重,但我们试图使整体吞吐量越来越高。

我们浏览了 30 多篇关于 Nginx 的优化文章。通过主要关注文章并进行 TCP 优化,我们能够将输出从 300 个请求/分钟增加到 350 个请求/分钟。

通过这种方式,我们严重影响了服务器加载时间。我可以告诉你没有平均负载,因为这是一个新盒子,它是基于 Nginx 的。我们过去有 Apache 工作人员(少于 300 个请求/分钟)。现在有了 350req/m,我们的 AVG 负载为 20。这太过分了,我们正在寻求改进。

当我们使用 htop 调查进程时,通常我们会看到大约 20 个 php-fpm 进程大量使用所有 16 个 CPU,并且内存在 24GB 中的 2GB 左右。

我们的目标是大幅减少系统负载。我希望有经验的用户分享他们的知识,看看哪里,尝试什么。我会发布您要求的任何数字,但我不想在一开始就用它来填写帖子。

您将如何继续减少系统负载但仍保持吞吐量。

linux
  • 4 4 个回答
  • 837 Views

4 个回答

  • Voted
  1. Best Answer
    pauska
    2013-12-19T09:23:05+08:002013-12-19T09:23:05+08:00

    既然我们已经确定这是一个纯粹的 CPU 占用问题(没有 iowait),那么我真的看不出有任何方法可以在不增加更多资源的情况下保持相同的吞吐量。要么调低 PHP 进程的最大数量,要么添加更多 CPU 内核。

    或者让开发人员使用 ImageMagick 以外的其他东西。

    • 4
  2. Manuel Sousa
    2013-12-19T09:46:18+08:002013-12-19T09:46:18+08:00

    如果您有重复的请求,您可以检查 fastcgi 缓存(http://wiki.nginx.org/HttpFastcgiModule)或在 nginx 前面使用 varnish。

    这将使您能够缓存已处理的图像,而不必再次执行繁重的 cpu 进程。

    • 0
  3. MTIhai
    2013-12-20T02:55:08+08:002013-12-20T02:55:08+08:00

    由于您的问题表明 PHP-FPM 进程位于 TOP cpu 中,因此我认为您正在使用 ImageMagick PHP 库(http://php.net/imagick)。

    请您的开发人员测试图像处理直接由 ImageMagick 二进制文件完成的场景(例如 /usr/bin/[compare, import, display ...]。

    如果直接使用二进制文件,那么使用 php 函数 exec() 并封装对 ImageMagick 二进制文件的调用,看看它是如何进行的(在 CPU 和持续时间方面)。

    @附加信息:https ://stackoverflow.com/questions/4323672/how-do-i-get-imagemagick-installed

    • 0
  4. andreyvlru
    2014-11-03T11:09:45+08:002014-11-03T11:09:45+08:00

    开发者方式

    1. 尝试减少图像处理的 php 开销。
    2. 尝试使用更少的资源进行图像处理。使用准备好的图像或更改一些性能要求较低的操作

    管理方式

    1. 使用更强大的 CPU
    • 0

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

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