SlideShare a Scribd company logo
1 of 27
Nginx Unitを試してみた話
Nginx Unitってなに?
・NGINX社製 軽量アプリケーションサーバ。
・RESTful APIやJSON経由でサービス無停止でリアルタイムに設定変更が出来
る。
・1つのサーバに複数の言語の実行系や同一言語の複数バージョンの実行系を搭
載出来る。
・4月に正式版リリース
・最新バージョンは1.1
Nginx Unitってなに?
Nginx Unitってなに?
Nginx Unitってなに?
Nginx Unitってなに?
今後の予定
・SSL/TLSとHTTP/2のサポート
・Node.jsのサポート
・Javaサポート
CentOS: yum install unit
インストール
※その他詳細はWebで!
Ubuntu: apt-get install unit
Source Code: ./configure
make
make install
起動方法
ubuntu / centos : systemctl start unitd
source : unitd --log /var/log/unitd.log --pid /run/unitd.pid
設定方法
curl -X PUT -d @php_config.json --unix-socket control.unit.sock http://localhost/
{
"listeners": {
"*:80": {
"application": "hello_php"
}
},
"applications": {
"hello_php": {
"type": "php",
"processes": 10,
"root": "/var/www/php/",
"index": "index.php"
}
}
}
設定方法
※その他詳細はWebで!
設定確認:curl --unix-socket control.unit.sock http://localhost/
設定削除:
curl -X DELETE --unix-socket control.unit.sock 'http://localhost/config/listeners/*:80'
curl -X DELETE --unix-socket control.unit.sock 'http://localhost/config/applications/hello_php'
デモやります
ベンチマークとってみた
ベンチマーク
従来の方式(Nginx+php-fpm、Nginx+wsgi等)とNginx Unit
でどれくらい性能差があるか確認してみた。
ベンチマーク
・実行環境
macbook + vagrant + virtualboxで立てたUbuntu16.04
CPU2コア、メモリ1GB
・同じmac上で立てたCentOS7からApacheBenchを実行
ab -n <総リクエスト数> -c <同時リクエスト数><URL>
実行したコマンド:ab -n 100000 -c 100 http://xxxxxx
見る値:Requests per second(1秒で処理できるリクエスト数)(数値が高い方が好ましい)
Time per request(1リクエストの平均処理時間)(数値が低い方が好ましい)
NginxとNgnix Unitのプロセス数
Nginx : worker_processes 2;
Nginx Unit : "processes": 2
ベンチマークとる組み合わせ
・従来方式(Nginx+php-fpmなど)
・Nginx + Nignx Unit (Nginxをフロントでプロキシ)
・Nginx Unit単体
PHP
従来方式:Nginx + php-fpm
PHPコード
<?php
echo 'PHP Hello,World!';
?>
PHP ベンチ結果
Nginx + php-fpm Nginx + Nginx Unit Nginx Unit
Requests per second 4889.25 [#/sec] 3700.67 [#/sec] 5051.71 [#/sec]
Time per request 0.205 [ms] 0.270 [ms] 0.198 [ms]
Python
従来方式:Nginx + uWSGI
Pythonコード
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Python Hello World"]
Python ベンチ結果
Nginx + uWSGI Nginx + Nginx Unit Nginx Unit
Requests per second 4435.80 [#/sec] 4109.40 [#/sec] 5293.54 [#/sec]
Time per request 0.225 [ms] 0.243 [ms] 0.189 [ms]
Ruby
従来方式:Nginx + unicorn + rails
Rubyコード
require 'rubygems'
require 'sinatra/base'
class HelloApp < Sinatra::Base
get '/hello' do
'Ruby Hello World!'
end
end
run HelloApp
Ruby ベンチ結果
Nginx + unicorn+rails Nginx + Nginx Unit Nginx Unit
Requests per second 2497.55 [#/sec] 2538.71 [#/sec] 3604.32 [#/sec]
Time per request 0.400 [ms] 0.394 [ms] 0.277 [ms]
Go
従来
package main
import (
"fmt"
"net"
"net/http"
"net/http/fcgi"
)
func handler(w http.ResponseWriter, r
*http.Request) {
fmt.Fprintf(w, "Go Hello, World!")
}
func main() {
l, err := net.Listen("tcp", "127.0.0.1:9000")
if err != nil {
return
}
http.HandleFunc("/go", handler)
fcgi.Serve(l, nil)
}
package main
import (
"fmt"
"net/http"
"nginx/unit"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r
*http.Request) {
fmt.Fprintf(w, "Go Hello World")
})
unit.ListenAndServe(":9000", nil)
}
Nginx Unit
Go ベンチ結果
Nginx + go Nginx + Nginx Unit Nginx Unit
Requests per second 2565.68 [#/sec] 3133.33 [#/sec] 5255.99 [#/sec]
Time per request 0.390 [ms] 0.319 [ms] 0.190 [ms]
Requests per second
Time per request
まとめ
・環境構築が簡単。
・複数言語、複数バージョンをテストする環境
を作りたいときにはいいかも。
・性能はそこそこいいみたいだけど、安定性が
気になるところ。

More Related Content

What's hot

ファイルシステム比較
ファイルシステム比較ファイルシステム比較
ファイルシステム比較NaoyaFukuda
 
VirtualBox と Rocky Linux 8 で始める Pacemaker ~ VirtualBox でも STONITH 機能が試せる! Vi...
VirtualBox と Rocky Linux 8 で始める Pacemaker  ~ VirtualBox でも STONITH 機能が試せる! Vi...VirtualBox と Rocky Linux 8 で始める Pacemaker  ~ VirtualBox でも STONITH 機能が試せる! Vi...
VirtualBox と Rocky Linux 8 で始める Pacemaker ~ VirtualBox でも STONITH 機能が試せる! Vi...ksk_ha
 
Pacemaker 操作方法メモ
Pacemaker 操作方法メモPacemaker 操作方法メモ
Pacemaker 操作方法メモMasayuki Ozawa
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けモノビット エンジン
 
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例kazuhcurry
 
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...NTT DATA Technology & Innovation
 
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)Kuniyasu Suzaki
 
オトナのDocker入門
オトナのDocker入門オトナのDocker入門
オトナのDocker入門Tsukasa Kato
 
AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較beyond Co., Ltd.
 
PacemakerのMaster/Slave構成の基本と事例紹介(DRBD、PostgreSQLレプリケーション) @Open Source Confer...
PacemakerのMaster/Slave構成の基本と事例紹介(DRBD、PostgreSQLレプリケーション) @Open Source Confer...PacemakerのMaster/Slave構成の基本と事例紹介(DRBD、PostgreSQLレプリケーション) @Open Source Confer...
PacemakerのMaster/Slave構成の基本と事例紹介(DRBD、PostgreSQLレプリケーション) @Open Source Confer...Tatsuya Watanabe
 
CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)Shota Shinogi
 
大規模環境のOpenStack アップグレードの考え方と実施のコツ
大規模環境のOpenStackアップグレードの考え方と実施のコツ大規模環境のOpenStackアップグレードの考え方と実施のコツ
大規模環境のOpenStack アップグレードの考え方と実施のコツTomoya Hashimoto
 
MySQLとPostgreSQLの基本的なレプリケーション設定比較
MySQLとPostgreSQLの基本的なレプリケーション設定比較MySQLとPostgreSQLの基本的なレプリケーション設定比較
MySQLとPostgreSQLの基本的なレプリケーション設定比較Shinya Sugiyama
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
 
ARMアーキテクチャにおけるセキュリティ機構の紹介
ARMアーキテクチャにおけるセキュリティ機構の紹介ARMアーキテクチャにおけるセキュリティ機構の紹介
ARMアーキテクチャにおけるセキュリティ機構の紹介sounakano
 
Docker活用パターンの整理 ― どう組み合わせるのが正解?!
Docker活用パターンの整理 ― どう組み合わせるのが正解?!Docker活用パターンの整理 ― どう組み合わせるのが正解?!
Docker活用パターンの整理 ― どう組み合わせるのが正解?!Etsuji Nakai
 
Redmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたRedmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたKohei Nakamura
 

What's hot (20)

ファイルシステム比較
ファイルシステム比較ファイルシステム比較
ファイルシステム比較
 
Nmapの真実(続)
Nmapの真実(続)Nmapの真実(続)
Nmapの真実(続)
 
VirtualBox と Rocky Linux 8 で始める Pacemaker ~ VirtualBox でも STONITH 機能が試せる! Vi...
VirtualBox と Rocky Linux 8 で始める Pacemaker  ~ VirtualBox でも STONITH 機能が試せる! Vi...VirtualBox と Rocky Linux 8 で始める Pacemaker  ~ VirtualBox でも STONITH 機能が試せる! Vi...
VirtualBox と Rocky Linux 8 で始める Pacemaker ~ VirtualBox でも STONITH 機能が試せる! Vi...
 
Pacemaker 操作方法メモ
Pacemaker 操作方法メモPacemaker 操作方法メモ
Pacemaker 操作方法メモ
 
PostgreSQLバックアップの基本
PostgreSQLバックアップの基本PostgreSQLバックアップの基本
PostgreSQLバックアップの基本
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例
 
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
 
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
 
オトナのDocker入門
オトナのDocker入門オトナのDocker入門
オトナのDocker入門
 
AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較
 
JenkinsのAWS連携
JenkinsのAWS連携JenkinsのAWS連携
JenkinsのAWS連携
 
PacemakerのMaster/Slave構成の基本と事例紹介(DRBD、PostgreSQLレプリケーション) @Open Source Confer...
PacemakerのMaster/Slave構成の基本と事例紹介(DRBD、PostgreSQLレプリケーション) @Open Source Confer...PacemakerのMaster/Slave構成の基本と事例紹介(DRBD、PostgreSQLレプリケーション) @Open Source Confer...
PacemakerのMaster/Slave構成の基本と事例紹介(DRBD、PostgreSQLレプリケーション) @Open Source Confer...
 
CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)
 
大規模環境のOpenStack アップグレードの考え方と実施のコツ
大規模環境のOpenStackアップグレードの考え方と実施のコツ大規模環境のOpenStackアップグレードの考え方と実施のコツ
大規模環境のOpenStack アップグレードの考え方と実施のコツ
 
MySQLとPostgreSQLの基本的なレプリケーション設定比較
MySQLとPostgreSQLの基本的なレプリケーション設定比較MySQLとPostgreSQLの基本的なレプリケーション設定比較
MySQLとPostgreSQLの基本的なレプリケーション設定比較
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
ARMアーキテクチャにおけるセキュリティ機構の紹介
ARMアーキテクチャにおけるセキュリティ機構の紹介ARMアーキテクチャにおけるセキュリティ機構の紹介
ARMアーキテクチャにおけるセキュリティ機構の紹介
 
Docker活用パターンの整理 ― どう組み合わせるのが正解?!
Docker活用パターンの整理 ― どう組み合わせるのが正解?!Docker活用パターンの整理 ― どう組み合わせるのが正解?!
Docker活用パターンの整理 ― どう組み合わせるのが正解?!
 
Redmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたRedmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみた
 

Similar to Nginx Unitを試してみた話

ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefnpsg
 
Openshift NGINX Kubernetes (Japanese Webinar)
Openshift NGINX Kubernetes (Japanese Webinar)Openshift NGINX Kubernetes (Japanese Webinar)
Openshift NGINX Kubernetes (Japanese Webinar)NGINX, Inc.
 
Ubuntu OpenStack Installer を使った1Node OpenStack
Ubuntu OpenStack Installer を使った1Node OpenStackUbuntu OpenStack Installer を使った1Node OpenStack
Ubuntu OpenStack Installer を使った1Node OpenStackVirtualTech Japan Inc.
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介Etsuji Nakai
 
Lagopus Switch Usecases
Lagopus Switch UsecasesLagopus Switch Usecases
Lagopus Switch UsecasesSakiko Kawai
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825hiro345
 
NGINX製品の最新機能アップデート情報
NGINX製品の最新機能アップデート情報NGINX製品の最新機能アップデート情報
NGINX製品の最新機能アップデート情報NGINX, Inc.
 
2016 1102 EnOcean Alliance Japan Event
2016 1102 EnOcean Alliance Japan Event2016 1102 EnOcean Alliance Japan Event
2016 1102 EnOcean Alliance Japan EventAtomu Hidaka
 
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミングPyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミングRansui Iso
 
クラウドインフラのゲスト OS は openSUSE で—今までの&新しい openSUSE 活用法の紹介
クラウドインフラのゲスト OS は openSUSE で—今までの&新しい openSUSE 活用法の紹介クラウドインフラのゲスト OS は openSUSE で—今までの&新しい openSUSE 活用法の紹介
クラウドインフラのゲスト OS は openSUSE で—今までの&新しい openSUSE 活用法の紹介Fuminobu Takeyama
 
Webサーバ勉強会#4
Webサーバ勉強会#4Webサーバ勉強会#4
Webサーバ勉強会#4oranie Narut
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門VirtualTech Japan Inc.
 

Similar to Nginx Unitを試してみた話 (20)

ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
Case study puppet
Case study puppetCase study puppet
Case study puppet
 
Openshift NGINX Kubernetes (Japanese Webinar)
Openshift NGINX Kubernetes (Japanese Webinar)Openshift NGINX Kubernetes (Japanese Webinar)
Openshift NGINX Kubernetes (Japanese Webinar)
 
OpenStack Icehouse構築手順書
OpenStack Icehouse構築手順書OpenStack Icehouse構築手順書
OpenStack Icehouse構築手順書
 
Ubuntu OpenStack Installer を使った1Node OpenStack
Ubuntu OpenStack Installer を使った1Node OpenStackUbuntu OpenStack Installer を使った1Node OpenStack
Ubuntu OpenStack Installer を使った1Node OpenStack
 
OpenStack構築手順書 Juno版
OpenStack構築手順書 Juno版OpenStack構築手順書 Juno版
OpenStack構築手順書 Juno版
 
Xen Nic
Xen NicXen Nic
Xen Nic
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
 
Lagopus Switch Usecases
Lagopus Switch UsecasesLagopus Switch Usecases
Lagopus Switch Usecases
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825
 
Disaggregated Junos Software Infrastructure
Disaggregated Junos Software InfrastructureDisaggregated Junos Software Infrastructure
Disaggregated Junos Software Infrastructure
 
NGINX製品の最新機能アップデート情報
NGINX製品の最新機能アップデート情報NGINX製品の最新機能アップデート情報
NGINX製品の最新機能アップデート情報
 
2016 1102 EnOcean Alliance Japan Event
2016 1102 EnOcean Alliance Japan Event2016 1102 EnOcean Alliance Japan Event
2016 1102 EnOcean Alliance Japan Event
 
20230128.pptx
20230128.pptx20230128.pptx
20230128.pptx
 
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミングPyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミング
 
lilo.linux.or.jp の話
lilo.linux.or.jp の話lilo.linux.or.jp の話
lilo.linux.or.jp の話
 
クラウドインフラのゲスト OS は openSUSE で—今までの&新しい openSUSE 活用法の紹介
クラウドインフラのゲスト OS は openSUSE で—今までの&新しい openSUSE 活用法の紹介クラウドインフラのゲスト OS は openSUSE で—今までの&新しい openSUSE 活用法の紹介
クラウドインフラのゲスト OS は openSUSE で—今までの&新しい openSUSE 活用法の紹介
 
Webサーバ勉強会#4
Webサーバ勉強会#4Webサーバ勉強会#4
Webサーバ勉強会#4
 
20030712
2003071220030712
20030712
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門
 

Nginx Unitを試してみた話