服务器优化指南之一(硬件升级)

当后端的服务并发满足不了需要的时候,升级硬件往往是一个不错的选择。

下面做一组测试,有A、B两台服务器,配置分别见下图

|机型| CPU核数| 内存|
| - | - |
|A |4 |8G|
|B |24 |64G|
A、B两台机器的php环境都是

1
2
3
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

分别在每台机器上面运行hardware.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

<?php

/**
* benchmark server
*/

date_default_timezone_set('Asia/Chongqing');

$server = new swoole_server("****", 8887, SWOOLE_PROCESS, SWOOLE_SOCK_UDP);

$server->set(array(
'worker_num' => 4,
'daemonize' => false,
));

$server->on('connect', function ($server, $fd) {
echo "Client:Connect.\n";
});

$server->on('receive', function ($server, $fd, $from_id, $data) {
$server->send($fd, 'Swoole: '.$data);
$server->close($fd);
});

$server->on('close', function ($server, $fd) {
echo "Client: Close.\n";
});

$server->start();

找一台C机器,然后下载swoole源代码,将其放在/usr/local文件夹下并解压

1
cd /usr/local/swoole/benchmark

然后执行命令来测试A机的服务能力

1
php run.php -c 100 -n 300000 -s udp://A-ip:A-port -f udp
1
2
3
4
5
6
7
concurrency:    100
request num: 300000
lost num: 0
success num: 300000
total time: 3.616
req per second: 82952
one req use(ms): 0.012

继续执行命令来测试B机的服务能力

1
php run.php -c 100 -n 300000 -s udp://B-ip:B-port -f udp
1
2
3
4
5
6
7
concurrency:    100
request num: 300000
lost num: 0
success num: 300000
total time: 2.141
req per second: 140111
one req use(ms): 0.007

从测试结果可以看到,在服务器程序一样的条件下,升级服务器配置可以极大地提高服务的处理能力~