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 / 问题 / 80047
Accepted
Jakub Arnold
Jakub Arnold
Asked: 2009-10-31 14:50:35 +0800 CST2009-10-31 14:50:35 +0800 CST 2009-10-31 14:50:35 +0800 CST

如何缩小内存不足的服务器?

  • 772

我的一个 Rails 应用程序有问题,它在 365MB VPS 上运行,这似乎不是很多。当同时有超过 3-5 个用户时,它会耗尽内存并开始使用交换,这非常慢。

当我查看top时,我可以看到有许多衍生的 mysql 实例(比 Rails 进程多得多)。这是正常的吗?

您如何建议为低内存环境缩减应用程序?

我正在使用 Ubuntu 9.04、Apache2.2 和 mod 乘客、MySQL 5.075 和 Ruby 1.8.7

编辑:根据您的建议,我将 VPS 升级到 540MB,目前看来已经足够了。然而,我只是一个穷学生,所以我不能在一些我主要为自己做的项目中投入太多资金,直到它开始至少有一些回报。

mysql
  • 4 4 个回答
  • 918 Views

4 个回答

  • Voted
  1. womble
    2009-10-31T17:25:31+08:002009-10-31T17:25:31+08:00

    您将花费大量时间(并因此花费金钱)来调整参数,以可能会节省少量内存。只需升级 VPS 上的 RAM,您将获得更多收益。

    • 4
  2. Best Answer
    MarkR
    2009-10-31T15:00:10+08:002009-10-31T15:00:10+08:00

    将有几个mysql线程,而不是进程。某些版本的“Top”和“ps”将线程显示为好像它们是单独的进程。

    MySQL 可以随心所欲地调整。调整它的最佳方法是对所有表只使用一个引擎 - 如果您使用 InnoDB,请仅使用 InnoDB。

    然后根据需要调整缓冲区 - 主要是 MyISAM 密钥缓存和 innodb 缓冲池。如果您只使用 MyISAM,请在 my.cnf 中使用 skip-innodb 完全禁用 innodb 引擎。

    就 Apache 而言,尽可能少地运行 MaxClients;要么禁用keepalive,要么将超时设置得非常低——keepalive 连接仍然会占用一个(庞大的)Apache 进程。

    当然,做任何这些事情都可能对性能有害,因此如果您关心性能回归,请在非生产系统上进行测试。

    购买更多的内存可能比花时间调整这么小的盒子更具成本效益。在我们的工作中,每个开发人员都有一个带有 16G ram 的刀片,仅用于测试目的。这被认为是合理的并且不是很昂贵。

    • 2
  3. Maximus Minimus
    2009-11-01T03:52:28+08:002009-11-01T03:52:28+08:00

    您将需要深入挖掘并准确找出正在使用您的内存的内容,每个进程需要多少,寻找潜在的泄漏等等。但我的建议将与其他建议相呼应:改为获取更多 RAM。365MB 很小,根本无法扩展。问题因您选择的框架而变得更加复杂 - 在这里阅读 Twitter 体验。

    选择的外卖:

    所有让 Rails 为程序员带来乐趣的便捷方法和语法糖,最终在性能方面绝对是惩罚性的。一旦达到一定的流量阈值,要么你需要去掉 Rails 为你做的所有昂贵的整洁的东西(RJS、ActiveRecord、ActiveSupport 等),要么将应用程序的慢速部分移出 Rails,或两者兼而有之。值得一提的是,在这一点上,任何人都不应该怀疑 Ruby 本身很慢。

    • 1
  4. nybergh
    2009-11-01T07:04:47+08:002009-11-01T07:04:47+08:00

    lowendbox.com是一个与此问题相关的值得收藏的好网站(优化低内存服务器)

    以下内容当然与您现有的设置不匹配,但请考虑切换到更轻的 httpd,例如 nginx och lighttpd。这两个中的任何一个都应该为您节省大量内存,至少每个静态 http 连接是这样。乘客可用于 nginx。

    • 1

相关问题

  • 开源与专有关系 db mgt 系统的优缺点是什么?

  • 在 solaris 10 上为 mysql 设置 max_allowed_pa​​cket

  • 如何移动 MySQL 的数据目录?

  • 通过 VPN 连接什么是远程服务器 IP?

  • mysql崩溃

Sidebar

Stats

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

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

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

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

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

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +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