rabbit-slide-kou-nginx-tech-talks 2016.2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,203 @@
1
+ = ngx_http_groonga\n全文検索nginx
2
+
3
+ : author
4
+ 須藤功平
5
+ : institution
6
+ クリアコード
7
+ : content-source
8
+ nginx Tech Talks
9
+ : date
10
+ 2016-02-08
11
+ : allotted-time
12
+ 5m
13
+ : theme
14
+ .
15
+
16
+ = nginx
17
+
18
+ * HTTPサーバー
19
+ * HTTPリバースプロキシサーバー
20
+ * (('wait'))メールプロキシサーバー
21
+ * (('wait'))TCPプロキシサーバー\n
22
+ (('note:1.9.0から。まだmainline。'))
23
+
24
+ (('wait'))
25
+ (('tag:center'))
26
+ nginx = いろいろできるサーバー
27
+
28
+ = 全文検索nginx
29
+
30
+ * HTTPサーバー
31
+ * HTTPリバースプロキシサーバー
32
+ * メールプロキシサーバー
33
+ * TCPプロキシサーバー
34
+ * [((*New!*))]全文検索エンジン!
35
+
36
+ = 使い方:登録
37
+
38
+ # image
39
+ # src = images/register.svg
40
+ # relative_height = 100
41
+
42
+ = 使い方:検索
43
+
44
+ # image
45
+ # src = images/search.svg
46
+ # relative_height = 100
47
+
48
+ = 速度:1リクエスト
49
+
50
+ # CPU:core i7・8コア・ハイパースレッディング
51
+ #
52
+ # ソース:Wikipedia日本語版
53
+ # レコード数:1846514
54
+ # データサイズ:約7GB
55
+ # キーワード:nginx
56
+ # ヒット数:26件
57
+ # 検索時間(出力レコード数0):0.4ms
58
+ # 検索時間(出力レコード数10・タイトルのみ出力):0.6ms
59
+ # 検索時間(出力レコード数10・タイトルと本文を出力):2ms
60
+
61
+ * 対象:Wikipedia日本語版
62
+ * レコード数:約185万件
63
+ * データサイズ:約7GB
64
+ * 検索キーワード:nginx
65
+
66
+ (('wait'))
67
+ (('tag:center'))
68
+ (('tag:x-large'))
69
+ 0.6ms\n
70
+ (('note:Intel Core i7-6700 3.40GHz'))
71
+
72
+ = 速度:スループット
73
+
74
+ # ベンチマーク(出力レコード数10・タイトルのみ出力・ワーカー数8・有線LANで接続)
75
+
76
+ # image
77
+ # src = throughput-no-keep-alive.pdf
78
+ # relative_height = 90
79
+
80
+ (('tag:center'))
81
+ (('note:ワーカー数を増やすとCPUコア数までスケール'))
82
+
83
+ = 速度:スループット
84
+
85
+ # image
86
+ # src = throughput-with-keep-alive.pdf
87
+ # relative_height = 90
88
+
89
+ (('tag:center'))
90
+ (('note:クライアントがkeep-aliveを使うとさらにスケール'))
91
+
92
+ = 速度
93
+
94
+ * 1リクエストの処理も速い
95
+ * スループットも出る
96
+ * ワーカー数を増やすとスケール
97
+ * keep-aliveでさらにスケール
98
+
99
+ = 速さの理由
100
+
101
+ * (('wait'))本物の全文検索エンジンを組込
102
+ * →1リクエストの処理が速い\n
103
+ (('note:(しかも豊富な機能)'))
104
+ * (('wait'))それもnginxのよさを殺さずに
105
+ * 例:マルチプロセスでスケール
106
+ * 例:性能向上用のHTTPの機能を利用\n
107
+ (('note:(keep-alive、レスポンス圧縮など)'))
108
+ * 例:I/O多重化(('note:(同時接続数の増加に対応)'))
109
+
110
+ = 本物の全文検索エンジン
111
+
112
+ # image
113
+ # src = images/groonga-logo.svg
114
+ # relative_width = 100
115
+
116
+ (('tag:center'))
117
+ (ぐるんが)
118
+
119
+ = Groonga
120
+
121
+ * 速い
122
+ * (('wait'))日本語に強い(国産)
123
+ * (('wait'))ライブラリーとして使える
124
+ * ((*組み込みやすい*))
125
+ * (('wait'))((*マルチプロセス*))対応
126
+ * 複数のプロセスで同時にDBを使える
127
+
128
+ = 組込方法
129
+
130
+ モジュール
131
+
132
+ = ngx_http_groonga
133
+
134
+ # image
135
+ # src = images/ngx_http_groonga.svg
136
+ # relative_height = 100
137
+
138
+ = Groongaから見たメリット
139
+
140
+ * nginxと連携すると…
141
+ * (('wait'))プロセス管理を任せられる
142
+ * (('wait'))クライアントとのI/Oを任せられる
143
+ * (('wait'))keep-alive・認証・TLS・圧縮対応
144
+ * (('wait'))HTTP2対応(('note:(まだmainline)'))
145
+
146
+ (('wait'))
147
+ (('tag:center'))
148
+ 全文検索に集中できる!
149
+
150
+ = 困ったこと
151
+
152
+ * nginxのWindows用バイナリーを\n
153
+ GNU/Linux上でビルドできない
154
+ * (('wait'))Groongaはバイナリーを配布したい
155
+ * (('wait'))Windowsが必要だとリリース作業がツライ
156
+
157
+ = 対策
158
+
159
+ (('wait'))
160
+ パッチを送る
161
+
162
+ = 結果
163
+
164
+ (('wait'))
165
+ 取り込まれた\n
166
+ (('note:(1.7.7 released at 2014-10-28)'))
167
+
168
+ = パッチが取り込まれるまで
169
+
170
+ * (('wait'))hgでパッチを作る
171
+ * (('wait'))メーリングリストに送る
172
+ * (('wait'))やりとりする
173
+ * (('wait'))取り込まれる
174
+
175
+ (('wait'))
176
+ (('tag:center'))
177
+ 結構反応してくれるから\n
178
+ なにかあったら送るといいよ!
179
+
180
+ = 全文検索nginx
181
+
182
+ * nginx + Groonga\n
183
+ (('note: = groonga-httpd:Groongaパッケージに含まれている'))
184
+ * (('wait'))nginxが全文検索エンジンに!
185
+ * (('wait'))nginxのモジュール機能で実装
186
+
187
+ (('wait'))
188
+ (('tag:center'))
189
+ モジュールを作って\n
190
+ nginxと共存しよう!
191
+
192
+ = お知らせ
193
+
194
+ * (('wait'))MySQL・PostgreSQLとも共存
195
+ * (('wait'))Groongaは肉の日リリース
196
+
197
+ (('wait'))
198
+ (('tag:center'))
199
+ 2月9日にイベントあります!\n
200
+ \n
201
+ MySQLとPostgreSQLと\n
202
+ 日本語全文検索\n
203
+ (DMM.comラボにて)
@@ -0,0 +1,3 @@
1
+ @title_slide_title_font_size = @x_large_font_size * 0.9
2
+
3
+ include_theme("groonga")
@@ -0,0 +1,11 @@
1
+ # N connections 1 worker 4 workers 8 workers 8 workers + keep-alive
2
+ 1 1693 1517 1786 1559
3
+ 2 3045 3041 2910 3300
4
+ 3 3454 3130 3896 4887
5
+ 4 3477 4125 4699 6360
6
+ 5 3433 5305 5520 7210
7
+ 6 3429 5418 5750 7758
8
+ 7 3400 5315 5830 8433
9
+ 8 3479 5257 6252 9173
10
+ 16 3431 5340 6287 11512
11
+ 32 3462 5477 6101 12476
@@ -0,0 +1,53 @@
1
+ set terminal pdfcairo enhanced color transparent rounded
2
+
3
+ set key outside center top horizontal reverse Left samplen 2
4
+ unset border
5
+ set xtics scale 0
6
+ set ytics scale 0
7
+ set grid ytics linewidth 1 linetype -1
8
+
9
+ set style line 1 lt 1 lc rgbcolor "#3465a4" lw 2.5 pt 7 ps 1
10
+ set style line 2 lt 1 lc rgbcolor "#edd400" lw 2.5 pt 7 ps 1
11
+ set style line 3 lt 1 lc rgbcolor "#888a85" lw 2.5 pt 5 ps 1
12
+ set style line 4 lt 1 lc rgbcolor "#f57900" lw 2.5 pt 5 ps 1
13
+ set style line 5 lt 1 lc rgbcolor "#ad7fa8" lw 2.5 pt 9 ps 1
14
+ set style line 6 lt 1 lc rgbcolor "#4e9a06" lw 2.5 pt 9 ps 1
15
+ set style line 7 lt 1 lc rgbcolor "#ef2929" lw 2.5 pt 1 ps 1
16
+ set style line 8 lt 1 lc rgbcolor "#5c3566" lw 2.5 pt 1 ps 1
17
+ set style line 9 lt 1 lc rgbcolor "#c17d11" lw 2.5 pt 3 ps 1
18
+ set style line 10 lt 1 lc rgbcolor "#dce775" lw 2.5 pt 3 ps 1
19
+
20
+ set term pdf
21
+ set xlabel "N connections"
22
+ set ylabel "requests/sec"
23
+ set yrange [0:15000]
24
+
25
+ set label 1 \
26
+ "N CPUs = 8" \
27
+ at 32,9000 right
28
+ set output "throughput-no-keep-alive.pdf"
29
+ plot "throughput.data" using 1:2:xtic(1) \
30
+ title "1 worker" \
31
+ linestyle 5 \
32
+ with lines, \
33
+ "throughput.data" using 1:3:xtic(1) \
34
+ title "4 workers" \
35
+ linestyle 2 \
36
+ with lines, \
37
+ "throughput.data" using 1:4:xtic(1) \
38
+ title "8 workers" \
39
+ linestyle 1 \
40
+ with lines
41
+
42
+ set label 1 \
43
+ "N workers = 8 (= N CPUs)" \
44
+ at 32,3000 right
45
+ set output "throughput-with-keep-alive.pdf"
46
+ plot "throughput.data" using 1:4:xtic(1) \
47
+ title "No keep-alive" \
48
+ linestyle 1 \
49
+ with lines, \
50
+ "throughput.data" using 1:5:xtic(1) \
51
+ title "With keep-alive" \
52
+ linestyle 4 \
53
+ with lines
metadata ADDED
@@ -0,0 +1,89 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rabbit-slide-kou-nginx-tech-talks
3
+ version: !ruby/object:Gem::Version
4
+ version: 2016.2.8.0
5
+ platform: ruby
6
+ authors:
7
+ - Kouhei Sutou
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-02-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rabbit
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 2.0.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 2.0.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: rabbit-theme-groonga
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: nginxに全文検索エンジンGroongaを組み込んでnginxを全文検索サーバーにするngx_http_groongaを紹介します。
42
+ email:
43
+ - kou@clear-code.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - ".rabbit"
49
+ - README.rd
50
+ - Rakefile
51
+ - config.yaml
52
+ - images/groonga-icon-full-size.svg
53
+ - images/groonga-logo.svg
54
+ - images/ngx_http_groonga.svg
55
+ - images/register.svg
56
+ - images/search.svg
57
+ - ngx-http-groonga.rab
58
+ - pdf/nginx-tech-talks-ngx-http-groonga.pdf
59
+ - theme.rb
60
+ - throughput-no-keep-alive.pdf
61
+ - throughput-with-keep-alive.pdf
62
+ - throughput.data
63
+ - throughput.gnuplot
64
+ homepage: http://slide.rabbit-shocker.org/authors/kou/nginx-tech-talks/
65
+ licenses:
66
+ - CC BY 3.0
67
+ - CC BY-SA 4.0
68
+ metadata: {}
69
+ post_install_message:
70
+ rdoc_options: []
71
+ require_paths:
72
+ - lib
73
+ required_ruby_version: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ required_rubygems_version: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ requirements: []
84
+ rubyforge_project:
85
+ rubygems_version: 2.4.5.1
86
+ signing_key:
87
+ specification_version: 4
88
+ summary: ngx_http_groonga - 全文検索nginx
89
+ test_files: []