长时间运行脚本的服务器优化

长时间运行脚本的服务器优化

我有一个在远程 VPS 上运行的系统,其主要功能是长时间运行的脚本(它可以运行大约 10 小时,具体取决于用户输入)。

以下是它的一些特点:

  • 数据库插入和选择(MySQL)
  • HTTP 发布 (cURL)

以下是一些 VPS/系统功能:

  • Intel(R) Xeon(R) CPU E5-2430 0 @ 2.20GHz,11 核
  • 实际内存总计 1024 MB
  • OpenVZ 网络接口
  • CentOS Linux 6.4
  • Apache 版本 2.2.15
  • PHP 版本 5.3.3
  • MySQL 版本 5.1.69

基本上,长时间运行的脚本每秒应该执行大量 HTTP Post 和数据库选择和删除(针对队列)。每个 HTTP Post 都会从我的服务器向另一个未知服务器发送 50 kb,并且每个本地数据库操作将涉及几个字节。

我需要什么?我需要一个每秒执行至少以下操作的服务器:

  • 10 个 HTTP 帖子,大小为 50 kb(总计:约 500 kbps)
  • 数据库中 10 次选择和 10 次删除(总计:每秒约 20 次简单轻松的操作(对于队列))

现在,我的服务器只达到了我所需的 20%,但我觉得我可以从中获得更多(因为脚本本身已经优化了)。所以我想有关服务器配置的一些提示和良好做法,以优化其性能,因为我对它很菜鸟。例如:

  • 操作系统、Apache、PHP 和 MySQL 配置(缓存、启用或禁用某些功能、CPU 和内存限制等);
  • 默认禁用在 CentOS 上运行的愚蠢进程;
  • 正确配置服务器网络接口;
  • 增加服务器 CPU 核心或内存,甚至改变整个服务器功能;
  • 将 MySQL 更新至 5.6 版本

如果有人能提供帮助,我(当然还有其他新手)将不胜感激。

编辑:

刚刚收到!(无法回答我自己的问题...请查看下面的评论):D

答案1

我很想说,从您获得的性能和您提供的服务器规格来看,您的脚本远未达到优化水平。即使是普通智能手机也应该能获得比您告诉我们的更好的结果。

  • 那个“另一个未知的服务器”响应很快吗?
  • 您的脚本是否每次只生成一个请求,等待结果,然后才执行下一个请求,还是并行生成多个请求?
  • 数据库是瓶颈吗?它缺少索引吗?它有一些大数据库,但运行的是默认设置吗?从你的文字来看,似乎不是,但只是确认一下。

从操作系统的角度来看,我向你保证,默认的 CentOS 足以提供比你给我们的更好的性能,禁用几个后台进程可能会给你带来 0.5-1.0% 的性能提升,如果是这样的话,绝对不会像你需要的那样提升 500%。默认的 CentOS 安装不是从拉上手刹开始的。

相关内容