我有一个在远程 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 安装不是从拉上手刹开始的。