ngx_http_groonga 全文検索nginx Powered by Rabbit 2.1.9
ngx_http_groonga
全文検索nginx
須藤功平 クリアコード
nginx Tech Talks
2016-02-08
ngx_http_groonga 全文検索nginx Powered by Rabbit 2.1.9
nginx
HTTPサーバー
HTTPリバースプロキシサーバー
メールプロキシサーバー
TCPプロキシサーバー
1.9.0から。まだmainline。
nginx = いろいろできるサーバー
ngx_http_groonga 全文検索nginx Powered by Rabbit 2.1.9
全文検索nginx
HTTPサーバー
HTTPリバースプロキシサーバー
メールプロキシサーバー
TCPプロキシサーバー
[New!]全文検索エンジン!
ngx_http_groonga 全文検索nginx Powered by Rabbit 2.1.9
使い方:登録
全文検索
NGINX
登録
HTTP
POST
ngx_http_groonga 全文検索nginx Powered by Rabbit 2.1.9
使い方:検索
全文検索
NGINX
HTTP GET
?query=nginx
検索
ngx_http_groonga 全文検索nginx Powered by Rabbit 2.1.9
速度:1リクエスト
対象:Wikipedia日本語版
レコード数:約185万件
データサイズ:約7GB
検索キーワード:nginx
0.6msIntel Core i7-6700 3.40GHz
ngx_http_groonga 全文検索nginx Powered by Rabbit 2.1.9
速度:スループット
0
2000
4000
6000
8000
10000
12000
14000
1 2 3 4 5 6 7 8 16 32
N CPUs = 8
requests/sec
N connections
1 worker 4 workers 8 workers
ワーカー数を増やすとCPUコア数までスケール
ngx_http_groonga 全文検索nginx Powered by Rabbit 2.1.9
速度:スループット
0
2000
4000
6000
8000
10000
12000
14000
1 2 3 4 5 6 7 8 16 32
N workers = 8 (= N CPUs)
requests/sec
N connections
No keep-alive With keep-alive
クライアントがkeep-aliveを使うとさらにスケール
ngx_http_groonga 全文検索nginx Powered by Rabbit 2.1.9
速度
1リクエストの処理も速い
スループットも出る
ワーカー数を増やすとスケール
keep-aliveでさらにスケール
ngx_http_groonga 全文検索nginx Powered by Rabbit 2.1.9
速さの理由
本物の全文検索エンジンを組込
→1リクエストの処理が速い
(しかも豊富な機能)
それもnginxのよさを殺さずに
例:マルチプロセスでスケール
例:性能向上用のHTTPの機能を利用
(keep-alive、レスポンス圧縮など)
例:I/O多重化(同時接続数の増加に対応)
ngx_http_groonga 全文検索nginx Powered by Rabbit 2.1.9
本物の全文検索エンジン
(ぐるんが)
ngx_http_groonga 全文検索nginx Powered by Rabbit 2.1.9
Groonga
速い
日本語に強い(国産)
ライブラリーとして使える
組み込みやすい
マルチプロセス対応
複数のプロセスで同時にDBを使える
ngx_http_groonga 全文検索nginx Powered by Rabbit 2.1.9
組込方法
モジュール
ngx_http_groonga 全文検索nginx Powered by Rabbit 2.1.9
ngx_http_groonga
全文検索
NGINX
ngx_http_groonga
HTTP,I/O,TLS,...
HTTP
普通の
nginx
ngx_http_groonga 全文検索nginx Powered by Rabbit 2.1.9
Groongaから見たメリット
nginxと連携すると…
プロセス管理を任せられる
クライアントとのI/Oを任せられる
keep-alive・認証・TLS・圧縮対応
HTTP2対応(まだmainline)
全文検索に集中できる!
ngx_http_groonga 全文検索nginx Powered by Rabbit 2.1.9
困ったこと
nginxのWindows用バイナリーを
GNU/Linux上でビルドできない
Groongaはバイナリーを配布したい
Windowsが必要だとリリース作業が
ツライ
ngx_http_groonga 全文検索nginx Powered by Rabbit 2.1.9
対策
パッチを送る
ngx_http_groonga 全文検索nginx Powered by Rabbit 2.1.9
結果
取り込まれた(1.7.7 released at 2014-10-28)
ngx_http_groonga 全文検索nginx Powered by Rabbit 2.1.9
パッチが取り込まれるまで
hgでパッチを作る
メーリングリストに送る
やりとりする
取り込まれる
結構反応してくれるから
なにかあったら送るといいよ!
ngx_http_groonga 全文検索nginx Powered by Rabbit 2.1.9
全文検索nginx
nginx + Groonga
= groonga-httpd:Groongaパッケージに含まれている
nginxが全文検索エンジンに!
nginxのモジュール機能で実装
モジュールを作って
nginxと共存しよう!
ngx_http_groonga 全文検索nginx Powered by Rabbit 2.1.9
お知らせ
MySQL・PostgreSQLとも共存
Groongaは肉の日リリース
2月9日にイベントあります!
MySQLとPostgreSQLと
日本語全文検索
(DMM.comラボにて)

ngx_http_groonga - 全文検索nginx

  • 1.
    ngx_http_groonga 全文検索nginx Poweredby Rabbit 2.1.9 ngx_http_groonga 全文検索nginx 須藤功平 クリアコード nginx Tech Talks 2016-02-08
  • 2.
    ngx_http_groonga 全文検索nginx Poweredby Rabbit 2.1.9 nginx HTTPサーバー HTTPリバースプロキシサーバー メールプロキシサーバー TCPプロキシサーバー 1.9.0から。まだmainline。 nginx = いろいろできるサーバー
  • 3.
    ngx_http_groonga 全文検索nginx Poweredby Rabbit 2.1.9 全文検索nginx HTTPサーバー HTTPリバースプロキシサーバー メールプロキシサーバー TCPプロキシサーバー [New!]全文検索エンジン!
  • 4.
    ngx_http_groonga 全文検索nginx Poweredby Rabbit 2.1.9 使い方:登録 全文検索 NGINX 登録 HTTP POST
  • 5.
    ngx_http_groonga 全文検索nginx Poweredby Rabbit 2.1.9 使い方:検索 全文検索 NGINX HTTP GET ?query=nginx 検索
  • 6.
    ngx_http_groonga 全文検索nginx Poweredby Rabbit 2.1.9 速度:1リクエスト 対象:Wikipedia日本語版 レコード数:約185万件 データサイズ:約7GB 検索キーワード:nginx 0.6msIntel Core i7-6700 3.40GHz
  • 7.
    ngx_http_groonga 全文検索nginx Poweredby Rabbit 2.1.9 速度:スループット 0 2000 4000 6000 8000 10000 12000 14000 1 2 3 4 5 6 7 8 16 32 N CPUs = 8 requests/sec N connections 1 worker 4 workers 8 workers ワーカー数を増やすとCPUコア数までスケール
  • 8.
    ngx_http_groonga 全文検索nginx Poweredby Rabbit 2.1.9 速度:スループット 0 2000 4000 6000 8000 10000 12000 14000 1 2 3 4 5 6 7 8 16 32 N workers = 8 (= N CPUs) requests/sec N connections No keep-alive With keep-alive クライアントがkeep-aliveを使うとさらにスケール
  • 9.
    ngx_http_groonga 全文検索nginx Poweredby Rabbit 2.1.9 速度 1リクエストの処理も速い スループットも出る ワーカー数を増やすとスケール keep-aliveでさらにスケール
  • 10.
    ngx_http_groonga 全文検索nginx Poweredby Rabbit 2.1.9 速さの理由 本物の全文検索エンジンを組込 →1リクエストの処理が速い (しかも豊富な機能) それもnginxのよさを殺さずに 例:マルチプロセスでスケール 例:性能向上用のHTTPの機能を利用 (keep-alive、レスポンス圧縮など) 例:I/O多重化(同時接続数の増加に対応)
  • 11.
    ngx_http_groonga 全文検索nginx Poweredby Rabbit 2.1.9 本物の全文検索エンジン (ぐるんが)
  • 12.
    ngx_http_groonga 全文検索nginx Poweredby Rabbit 2.1.9 Groonga 速い 日本語に強い(国産) ライブラリーとして使える 組み込みやすい マルチプロセス対応 複数のプロセスで同時にDBを使える
  • 13.
    ngx_http_groonga 全文検索nginx Poweredby Rabbit 2.1.9 組込方法 モジュール
  • 14.
    ngx_http_groonga 全文検索nginx Poweredby Rabbit 2.1.9 ngx_http_groonga 全文検索 NGINX ngx_http_groonga HTTP,I/O,TLS,... HTTP 普通の nginx
  • 15.
    ngx_http_groonga 全文検索nginx Poweredby Rabbit 2.1.9 Groongaから見たメリット nginxと連携すると… プロセス管理を任せられる クライアントとのI/Oを任せられる keep-alive・認証・TLS・圧縮対応 HTTP2対応(まだmainline) 全文検索に集中できる!
  • 16.
    ngx_http_groonga 全文検索nginx Poweredby Rabbit 2.1.9 困ったこと nginxのWindows用バイナリーを GNU/Linux上でビルドできない Groongaはバイナリーを配布したい Windowsが必要だとリリース作業が ツライ
  • 17.
    ngx_http_groonga 全文検索nginx Poweredby Rabbit 2.1.9 対策 パッチを送る
  • 18.
    ngx_http_groonga 全文検索nginx Poweredby Rabbit 2.1.9 結果 取り込まれた(1.7.7 released at 2014-10-28)
  • 19.
    ngx_http_groonga 全文検索nginx Poweredby Rabbit 2.1.9 パッチが取り込まれるまで hgでパッチを作る メーリングリストに送る やりとりする 取り込まれる 結構反応してくれるから なにかあったら送るといいよ!
  • 20.
    ngx_http_groonga 全文検索nginx Poweredby Rabbit 2.1.9 全文検索nginx nginx + Groonga = groonga-httpd:Groongaパッケージに含まれている nginxが全文検索エンジンに! nginxのモジュール機能で実装 モジュールを作って nginxと共存しよう!
  • 21.
    ngx_http_groonga 全文検索nginx Poweredby Rabbit 2.1.9 お知らせ MySQL・PostgreSQLとも共存 Groongaは肉の日リリース 2月9日にイベントあります! MySQLとPostgreSQLと 日本語全文検索 (DMM.comラボにて)