PHP 7.1.1 FPMとWebバックエンドサーバーとしてのNode.js 7.4.0

みなさん、こんにちは。最新バージョンのPHPとNode.jsの総合的なパフォーマンステストの結果を共有することにしました。



サーバー構成:



シンプルなVDS-1コアプロセッサ2 GHz、1 GBのRAM、10 GB SSD。

OS:Debian 8.6。

サーバーが原則として多数の接続を処理できるように、基本的なカーネル設定も行われています。



科目:



-PHP 7.1.1 FPM

-Node.js 7.4.0



第一段階:



以下は、バックエンドが主に使用する操作です。 つまり、文字列の接着、ネットワーク入出力、算術演算、配列の操作です。



Node.jsのコード:



var fs = require('fs'); var mysql = require('mysql2'); console.time('Node.js ' + process.version + ':   1000000 '); var str = ''; for (var i = 0; i < 1000000; i++) { str += 's'; } console.timeEnd('Node.js ' + process.version + ':   1000000 '); console.time('Node.js ' + process.version + ':   1000000 '); var count = 0; for (var i = 0; i < 1000000; i++) { count++; } console.timeEnd('Node.js ' + process.version + ':   1000000 '); console.time('Node.js ' + process.version + ':    1000000 '); var array = []; for (var i = 0; i < 1000000; i++) { array.push('s'); } console.timeEnd('Node.js ' + process.version + ':    1000000 '); console.time('Node.js ' + process.version + ':    1000000 '); var array = {}; for (var i = 0; i < 1000000; i++) { array['s' + i] = 's'; } console.timeEnd('Node.js ' + process.version + ':    1000000 '); console.time('Node.js ' + process.version + ':   100 '); var content; for (var i = 0; i < 100; i++) { content = fs.readFileSync('./someFile.txt'); } console.timeEnd('Node.js ' + process.version + ':   100 '); console.time('Node.js ' + process.version + ': mysql query (SELECT NOW()) 100 '); // create the connection to database var connection = mysql.createConnection({host:'localhost', user: 'root', database: 'test', password: 'password'}); function promiseQuery(query) { return new Promise((resolve, reject) => { connection.query(query, function (err, results, fields) { resolve({err, results, fields}); }); }); } for (var i = 0; i < 100; i++) { var a = promiseQuery('SELECT NOW()'); a.then(({err, results, fields}) => { //console.log(results); }); } console.timeEnd('Node.js ' + process.version + ': mysql query (SELECT NOW()) 100 '); connection.end();
      
      





PHPのコード:



 <?php $phpVersion = "v" . explode('-', PHP_VERSION)[0]; $start = microtime(1); $str = ''; for ($i = 0; $i < 1000000; $i++) { $str .= 's'; } echo "PHP $phpVersion:   1000000 : " . round((microtime(1) - $start) * 1000, 3) . "ms \n"; $start = microtime(1); $count = 0; for ($i = 0; $i < 1000000; $i++) { $count++; } echo "PHP $phpVersion:   1000000 : " . round((microtime(1) - $start) * 1000, 3) . "ms \n"; $start = microtime(1); $array = array(); for ($i = 0; $i < 1000000; $i++) { $array[] = 's'; } echo "PHP $phpVersion:    1000000 : " . round((microtime(1) - $start) * 1000, 3) . "ms \n"; $start = microtime(1); $array = array(); for ($i = 0; $i < 1000000; $i++) { $array["s" . $i] = 's'; } echo "PHP $phpVersion:    1000000 : " . round((microtime(1) - $start) * 1000, 3) . "ms \n"; $start = microtime(1); for ($i = 0; $i < 100; $i++) { $fp = fopen("./someFile.txt", "r"); $content = fread($fp, filesize("./someFile.txt")); fclose($fp); } echo "PHP $phpVersion:   100 : " . round((microtime(1) - $start) * 1000, 3) . "ms \n"; $start = microtime(1); $mysql = new mysqli('localhost', 'root', 'password', 'test'); for ($i = 0; $i < 100; $i++) { $res = $mysql->query("SELECT NOW() as `now`"); $now = $res->fetch_assoc()['now']; } echo "PHP $phpVersion: mysql query (SELECT NOW()) 100 : " . round((microtime(1) - $start) * 1000, 3) . "ms \n";
      
      





結果:



画像



ご覧のとおり、PHPは加算操作を除くすべてのポイントで勝ちます。



第二段階:



「Hello world」の負荷テスト。 Nginx 11.7 + PHP 7.1.1 FPMとNode.js。 1000スレッドで1000リクエスト。 #ab -n 1000 -c 1000 ...



PHPコード:



 <?php echo "Hello world"; ?>
      
      





コードNode.js:



 const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World'); }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });
      
      





結果



PHPとNode.jsのテストを10回実行し、両方に最適な結果を選択しました。



Node.js:



画像



PHP:



画像



ご覧のとおり、ここではPHPが23%または628リクエスト/秒で勝ちます。 あなたを判断するのは大したことでも少ないことでもあります。



コメントで主題に関するあなたの考えを共有してください。



All Articles