SlideShare a Scribd company logo
1 of 44
高性能・安定運用のための Linux/DB システム構築 / 運用技術 松信 嘉範  (MATSUNOBU Yoshinori) サン・マイクロシステムズ株式会社 プリンシパル MySQL コンサルタント
プロフィール ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
安定稼働と高性能を支える要素 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
問題の大半はディスクI/O ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
製品の品質に対する目を向ける ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
一般解を求めすぎない ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
良いところよりも悪いところを見る ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
良いところよりも悪いところを見る(2) ,[object Object],[object Object],[object Object]
データベース以外にも目を向ける ,[object Object],[object Object],[object Object],[object Object]
アプリケーションの性質を ある程度知っておく ,[object Object],[object Object],[object Object],[object Object],[object Object]
OSSを責任転嫁の 道具にしてはいけない ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Linuxのチューニングと安定運用 ,[object Object],[object Object],[object Object],[object Object],[object Object]
メモリ領域 ,[object Object],[object Object],[object Object]
メモリを十分に取り、ダイレクト I/O を活用する ,[object Object],[object Object],[object Object],ファイルシステムキャッシュ InnoDB バッファプール 実メモリ InnoDB データファイル InnoDB バッファプール 実メモリ InnoDB データファイル
スワップ制御とOOM Killer ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
スワップサイズをゼロにしては いけない ,[object Object],[object Object],[object Object],top - 01:01:29 up  5:53,  3 users,  load average: 0.66, 0.17, 0.06 Tasks: 170 total,  3 running, 167 sleeping,  0 stopped,  0 zombie Cpu(s):  0.0%us,  24.9%sy ,  0.0%ni,75.0%id,0.2%wa,0.0%hi, 0.0%si,0.0%st Mem:  32967008k total, 32815800k used,  151208k free,  8448k buffers Swap:  0k total,  0k used,  0k free,  376880k cached PID USER  PR  NI  VIRT  RES  SHR S %CPU %MEM  TIME+  COMMAND 26988 mysql  25  0  30g  30g 1452 R 98.5 97.7  0:42.18  mysqld
スワップの調整 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
メモリ領域の割り当て ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
I/Oスケジューラ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
I/O スケジューラの性能差  (InnoDB) ・ I/O スケジューラの性能差は ミドルウェアにも依存する ・ MySQL5.4 は I/O スレッドが 計 16 本あるが、 5.1 では 2 本 ・簡易的なベンチマークでも cfq は I/O スレッド本数が 少ないときは良い性能が 出なかった ・ anticipatory はどんなときにも 悪い性能しか出なかった
I/O スケジューラのキューサイズ (MyISAM) ,[object Object],[object Object],[object Object],[object Object],[object Object]
ファイルシステム ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],InnoDB ブロック (16KB) 変更前 変更後 ストレージの I/O 単位 (512B 等 )
ファイルシステム (続き) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ファイルI/Oと同期書き込み (1) ,[object Object],[object Object],[object Object],disk Write cache disk seek & rotation time seek & rotation time
ファイルI/Oと同期書き込み (2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
使いこなしたいコマンド類 ,[object Object],[object Object],[object Object],[object Object],[object Object]
iostat ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],# iostat -xm 10 avg-cpu: %user %nice %system %iowait %steal %idle   21.16  0.00  6.14  29.77  0.00 42.93 Device: rqm/s wrqm/s  r/s  w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util   sdb  2.60 389.01 283.12 47.35  4.86  2.19  43.67  4.89 14.76  3.02 99.83  (283.12+47.35) * 3.02(ms)/1000 = 0.9980 = 100% util
iostat の例  (DBT-2) ,[object Object],[object Object],[object Object],[object Object],# iostat -xm 10 avg-cpu: %user %nice %system %iowait %steal %idle   21.16  0.00  6.14  29.77  0.00 42.93 Device: rqm/s wrqm/s  r/s  w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util   sdb  2.60 389.01 283.12 47.35  4.86  2.19  43.67  4.89 14.76  3.02 99.83  (283.12+47.35) * 3.02(ms)/1000 = 0.9980 = 100% util # iostat -xm 10 avg-cpu: %user %nice %system %iowait %steal %idle   40.03  0.00  16.51  16.52  0.00 26.94 Device: rrqm/s wrqm/s  r/s  w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util   sdb  6.39 368.53 543.06 490.41  6.71  3.90  21.02  3.29  3.20  0.90 92.66  (543.06+490.41) * 0.90(ms)/1000 = 0.9301 = 93% util
mpstat ,[object Object],[object Object],[object Object],[object Object]
vmstat と mpstat を併用する ,[object Object],# vmstat 1 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r  b  swpd  free  buff  cache  si  so  bi  bo  in  cs us sy id wa st   0  1 2096472 1645132  18648  19292  0  0  4848  0 1223  517  0  0 88 12  0 0  1 2096472 1645132  18648  19292  0  0  4176  0 1287  623  0  0 87 12  0 0  1 2096472 1645132  18648  19292  0  0  4320  0 1202  470  0  0 88 12  0 0  1 2096472 1645132  18648  19292  0  0  3872  0 1289  627  0  0 87 12  0 # mpstat -P ALL 1 ... 11:04:37 AM  CPU  %user  %nice  %sys %iowait  %irq  %soft  %steal  %idle  intr/s 11:04:38 AM  all  0.00  0.00  0.12  12.33  0.00  0.00  0.00  87.55 1201.98 11:04:38 AM  0  0.00  0.00  0.00  0.00  0.00  0.00  0.00  100.00  990.10 11:04:38 AM  1  0.00  0.00  0.00  0.00  0.00  0.00  0.00  100.00  0.00 11:04:38 AM  2  0.00  0.00  0.00  0.00  0.00  0.00  0.00  100.00  0.00 11:04:38 AM  3  0.00  0.00  0.00  0.00  0.00  0.00  0.00  100.00  0.00 11:04:38 AM  4  0.99  0.00  0.99  98.02  0.00  0.00  0.00  0.00  206.93 11:04:38 AM  5  0.00  0.00  0.00  0.00  0.00  0.00  0.00  100.00  0.00 11:04:38 AM  6  0.00  0.00  0.00  0.00  0.00  0.00  0.00  100.00  4.95 11:04:38 AM  7  0.00  0.00  0.00  0.00  0.00  0.00  0.00  100.00  0.00
Oprofile ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Oprofile の利用例 ,[object Object],[object Object],# opreport –l /usr/local/bin/mysqld samples  %  symbol name 83003  8.8858  String::copy (char const*, unsigned int, charset_info_st*, charset_info_st*, unsigned int*) 79125  8.4706  MYSQLparse(void*) 68253  7.3067  my_wc_mb_latin1 55410  5.9318  my_pthread_fastmutex_lock 34677  3.7123  my_utf8_uni 18359  1.9654  MYSQLlex(void*, void*) 12044  1.2894  _ZL15get_hash_symbolPKcjb 11425  1.2231  _ZL20make_join_statisticsP4JOINP10TABLE_LISTP4ItemP16st_dynamic_array samples  %  symbol name 83107  10.6202  MYSQLparse(void*) 68680  8.7765  my_pthread_fastmutex_lock 20469  2.6157  MYSQLlex(void*, void*) 13083  1.6719  _ZL15get_hash_symbolPKcjb 12148  1.5524  JOIN::optimize() 11529  1.4733  _ZL20make_join_statisticsP4JOINP10TABLE_LISTP4ItemP16st_dynamic_array
gdb ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ケーススタディ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],mysql> SELECT query_time, start_time, sql_text    ->  FROM mysql.slow_log WHERE start_time    -> BETWEEN '2010-02-05 23:00:00' AND '2010-02-05 01:00:00'    -> ORDER BY query_time DESC LIMIT 10; +------------+---------------------+----------+ | query_time | start_time  | sql_text | +------------+---------------------+----------+ | 00:00:11  | 2010-02-05 23:09:55 | begin  | | 00:00:09  | 2010-02-05 23:09:55 | Prepare  | | 00:00:08  | 2010-02-05 23:09:55 | Prepare  | | 00:00:08  | 2010-02-05 23:09:55 | Init DB  | | 00:00:08  | 2010-02-05 23:09:55 | Init DB  | | 00:00:07  | 2010-02-05 23:09:55 | Prepare  | | 00:00:07  | 2010-02-05 23:09:55 | Init DB  | | 00:00:07  | 2010-02-05 23:09:55 | Init DB  | | 00:00:07  | 2010-02-05 23:09:55 | Init DB  | | 00:00:06  | 2010-02-05 23:09:55 | Prepare  | +------------+---------------------+----------+ 10 rows in set (0.02 sec)
gdb によるスタックダンプ ,[object Object],[object Object],[object Object],[object Object],gdbtrace() { … PID=`cat /var/lib/mysql/mysql.pid` STACKDUMP=/tmp/stackdump.$$ echo ' thread apply all bt ' > $STACKDUMP echo ' detach ' >> $STACKDUMP echo ' quit ' >> $STACKDUMP gdb --batch --pid=$PID -x  $STACKDUMP } while loop do CONN=`netstat -an | grep 3306 | grep ESTABLISHED | wc | awk '{print $1}'` if [ $CONN -gt 40 ]; then gdbtrace() done sleep 3 done
[object Object],[object Object],[object Object],..... Thread 3 (Thread 0x46c1d950 (LWP 28494)): #0  0x00007ffda5474384 in __lll_lock_wait () from /lib/libpthread.so.0 #1  0x00007ffda546fc5c in _L_lock_1054 () from /lib/libpthread.so.0 #2  0x00007ffda546fb30 in  pthread_mutex_lock ()  from /lib/libpthread.so.0 #3  0x0000000000a0f67d in my_pthread_fastmutex_lock (mp=0xf46d30) at thr_mutex.c:487 #4  0x000000000060cbe4 in dispatch_command (command=16018736, thd=0x80,  packet=0x65 <Address 0x65 out of bounds>, packet_length=4294967295) at  sql_parse.cc:969 #5  0x000000000060cb56 in do_command (thd=0xf46d30) at sql_parse.cc:854 #6  0x0000000000607f0c in handle_one_connection (arg=0xf46d30) at sql_connect.cc:1127 #7  0x00007ffda546dfc7 in start_thread () from /lib/libpthread.so.0 #8  0x00007ffda46305ad in clone () from /lib/libc.so.6 #9  0x0000000000000000 in ?? () Thread 1 (Thread 0x7ffda58936e0 ( LWP 15380 )): #0  0x00007ffda4630571 in  clone ()  from /lib/libc.so.6 #1  0x00007ffda546d396 in do_clone () from /lib/libpthread.so.0 #2  0x00007ffda546db48 in  pthread_create@@GLIBC_2.2.5 ()  from /lib/libpthread.so.0 #3  0x0000000000600a66 in create_thread_to_handle_connection (thd=0x3d0f00) at  mysqld.cc:4811 #4  0x00000000005ff65a in handle_connections_sockets (arg=0x3d0f00) at mysqld.cc:5134 #5  0x00000000005fe6fd in main (argc=4001536, argv=0x4578c260) at mysqld.cc:4471 #0  0x00007ffda4630571 in clone () from /lib/libc.so.6
SystemTap ,[object Object],[object Object],[object Object],[object Object]
ケーススタディ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],mysql>  EXPLAIN  SELECT user_id, post_date, title  -> FROM diary ORDER BY rating DESC limit 100 ********* select_type: SIMPLE table: diary type: ALL key: NULL rows: 1163 Extra: Using filesort post_date 2010-03-29 2010-03-30 2010-03-31 2010-04-01 user_id 100 2 3 10 rating 4.71 3.32 4.10 4.50 title UEFA CL: Inter vs Chelsea Denmark vs Japan, 3-0 MySQL Administration Linux tuning post_date 2009-03-29 2009-03-30 2009-03-31 2009-04-01 user_id 100 2 3 10 rating 4.71 3.32 4.10 4.50 title UEFA CL: Inter vs Chelsea Denmark vs Japan, 3-0 MySQL Administration Linux tuning 1) Load into sort buffer 3) Fetch the rest columns 2) Sort 1) Load all columns into sort buffer 旧型方式 新型方式 rating 4.71 3.32 4.10 4.50 RowID 1 2 3 4 2) Sort rating 4.71 4.50 4.10 3.32 RowID 1 4 3 3
SystemTap を使う global oldsort=0; global newsort=0; probe process(&quot;/usr/local/bin/mysqld&quot;).function(&quot;*rr_from_pointers*&quot;).return { oldsort++; } probe process(&quot;/usr/local/bin/mysqld&quot;).function(&quot;*rr_unpack_from_buffer*&quot;).return { newsort++; } probe end { printf(&quot;# of returned rows sorted by old algorithm: %d &quot;, oldsort); printf(&quot;# of returned rows sorted by new algorithm: %d &quot;, newsort); } ----- [root #] stap sort.stp # of returned rows sorted by old algorithm: 0 # of returned rows sorted by new algorithm: 100
ネットワークとデータベース接続 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Persistent Connection/ Connection Pool Non-Persistent Connection Connect USE db SET NAMES utf8 SQL statement Disconnect SQL statement - Establish TCP/IP conn - Name Resolve to DNS - pthread_create() (Rollback) Web/App Server DB Server Web/App Server DB Server
カーネルパニックとHA構成 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Linuxの設定まとめ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ありがとうございました ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Q & A

More Related Content

What's hot

MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話Yoshinori Matsunobu
 
hbstudy# 28 SELinux HandsOn 公開版
hbstudy# 28 SELinux HandsOn 公開版hbstudy# 28 SELinux HandsOn 公開版
hbstudy# 28 SELinux HandsOn 公開版Hiroki Ishikawa
 
Introduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and DracutIntroduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and DracutTaisuke Yamada
 
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話Daichi Koike
 
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
 
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48Preferred Networks
 
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会ShuheiUda
 
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤTakashi Hoshino
 
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニングyoku0825
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)NTT DATA Technology & Innovation
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニックinfinite_loop
 
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法Kumazaki Hiroki
 
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...Google Cloud Platform - Japan
 
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方歩 柴田
 
RLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for DjangoRLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for DjangoTakayuki Shimizukawa
 
MySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれやMySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれやyoku0825
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
 

What's hot (20)

MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
 
hbstudy# 28 SELinux HandsOn 公開版
hbstudy# 28 SELinux HandsOn 公開版hbstudy# 28 SELinux HandsOn 公開版
hbstudy# 28 SELinux HandsOn 公開版
 
Introduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and DracutIntroduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and Dracut
 
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
 
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)
 
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
 
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
 
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ
 
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
 
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法
 
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
 
KafkaとPulsar
KafkaとPulsarKafkaとPulsar
KafkaとPulsar
 
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
 
RLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for DjangoRLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for Django
 
MySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれやMySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれや
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 

Similar to Linux/DB Tuning (DevSumi2010, Japanese)

HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLHandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLakirahiguchi
 
LINEのMySQL運用について
LINEのMySQL運用についてLINEのMySQL運用について
LINEのMySQL運用についてLINE Corporation
 
MySQLの運用でありがちなこと
MySQLの運用でありがちなことMySQLの運用でありがちなこと
MySQLの運用でありがちなことHiroaki Sano
 
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~Naoki (Neo) SATO
 
LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版LINE Corporation
 
Awsのクラウドデザインパターンをwindows azureに持ってきてみた
Awsのクラウドデザインパターンをwindows azureに持ってきてみたAwsのクラウドデザインパターンをwindows azureに持ってきてみた
Awsのクラウドデザインパターンをwindows azureに持ってきてみたSunao Tomita
 
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみたA 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみたGoAzure
 
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web serviceYAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web serviceKazuho Oku
 
Handlersocket 20110517
Handlersocket 20110517Handlersocket 20110517
Handlersocket 20110517akirahiguchi
 
Amazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズAmazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズSORACOM, INC
 
インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門Akihiro Kuwano
 
Share pointを支えるsql server2014最新情報 tokyo_公開用
Share pointを支えるsql server2014最新情報 tokyo_公開用Share pointを支えるsql server2014最新情報 tokyo_公開用
Share pointを支えるsql server2014最新情報 tokyo_公開用Yukio Kumazawa
 
081108huge_data.ppt
081108huge_data.ppt081108huge_data.ppt
081108huge_data.pptNaoya Ito
 
States of Dolphin - MySQL最新技術情報2013秋 -
States of Dolphin - MySQL最新技術情報2013秋 -States of Dolphin - MySQL最新技術情報2013秋 -
States of Dolphin - MySQL最新技術情報2013秋 -yoyamasaki
 
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門Daiyu Hatakeyama
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Masahiro Nagano
 
Webサーバのチューニング
WebサーバのチューニングWebサーバのチューニング
WebサーバのチューニングYu Komiya
 
ASPLOS2017: Building Durable Transactions with Decoupling for Persistent Memory
ASPLOS2017: Building Durable Transactions with Decoupling for Persistent MemoryASPLOS2017: Building Durable Transactions with Decoupling for Persistent Memory
ASPLOS2017: Building Durable Transactions with Decoupling for Persistent MemoryAtsushi Koshiba
 
Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストールYasuhiro Arai
 

Similar to Linux/DB Tuning (DevSumi2010, Japanese) (20)

HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLHandlerSocket plugin for MySQL
HandlerSocket plugin for MySQL
 
BP Study #16
BP Study #16BP Study #16
BP Study #16
 
LINEのMySQL運用について
LINEのMySQL運用についてLINEのMySQL運用について
LINEのMySQL運用について
 
MySQLの運用でありがちなこと
MySQLの運用でありがちなことMySQLの運用でありがちなこと
MySQLの運用でありがちなこと
 
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
 
LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版
 
Awsのクラウドデザインパターンをwindows azureに持ってきてみた
Awsのクラウドデザインパターンをwindows azureに持ってきてみたAwsのクラウドデザインパターンをwindows azureに持ってきてみた
Awsのクラウドデザインパターンをwindows azureに持ってきてみた
 
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみたA 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
 
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web serviceYAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
 
Handlersocket 20110517
Handlersocket 20110517Handlersocket 20110517
Handlersocket 20110517
 
Amazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズAmazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズ
 
インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門
 
Share pointを支えるsql server2014最新情報 tokyo_公開用
Share pointを支えるsql server2014最新情報 tokyo_公開用Share pointを支えるsql server2014最新情報 tokyo_公開用
Share pointを支えるsql server2014最新情報 tokyo_公開用
 
081108huge_data.ppt
081108huge_data.ppt081108huge_data.ppt
081108huge_data.ppt
 
States of Dolphin - MySQL最新技術情報2013秋 -
States of Dolphin - MySQL最新技術情報2013秋 -States of Dolphin - MySQL最新技術情報2013秋 -
States of Dolphin - MySQL最新技術情報2013秋 -
 
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
Webサーバのチューニング
WebサーバのチューニングWebサーバのチューニング
Webサーバのチューニング
 
ASPLOS2017: Building Durable Transactions with Decoupling for Persistent Memory
ASPLOS2017: Building Durable Transactions with Decoupling for Persistent MemoryASPLOS2017: Building Durable Transactions with Decoupling for Persistent Memory
ASPLOS2017: Building Durable Transactions with Decoupling for Persistent Memory
 
Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストール
 

More from Yoshinori Matsunobu

RocksDB Performance and Reliability Practices
RocksDB Performance and Reliability PracticesRocksDB Performance and Reliability Practices
RocksDB Performance and Reliability PracticesYoshinori Matsunobu
 
Consistency between Engine and Binlog under Reduced Durability
Consistency between Engine and Binlog under Reduced DurabilityConsistency between Engine and Binlog under Reduced Durability
Consistency between Engine and Binlog under Reduced DurabilityYoshinori Matsunobu
 
MyRocks introduction and production deployment
MyRocks introduction and production deploymentMyRocks introduction and production deployment
MyRocks introduction and production deploymentYoshinori Matsunobu
 
データベース技術の羅針盤
データベース技術の羅針盤データベース技術の羅針盤
データベース技術の羅針盤Yoshinori Matsunobu
 
MySQL for Large Scale Social Games
MySQL for Large Scale Social GamesMySQL for Large Scale Social Games
MySQL for Large Scale Social GamesYoshinori Matsunobu
 
Linux and H/W optimizations for MySQL
Linux and H/W optimizations for MySQLLinux and H/W optimizations for MySQL
Linux and H/W optimizations for MySQLYoshinori Matsunobu
 
More mastering the art of indexing
More mastering the art of indexingMore mastering the art of indexing
More mastering the art of indexingYoshinori Matsunobu
 
SSD Deployment Strategies for MySQL
SSD Deployment Strategies for MySQLSSD Deployment Strategies for MySQL
SSD Deployment Strategies for MySQLYoshinori Matsunobu
 
Linux performance tuning & stabilization tips (mysqlconf2010)
Linux performance tuning & stabilization tips (mysqlconf2010)Linux performance tuning & stabilization tips (mysqlconf2010)
Linux performance tuning & stabilization tips (mysqlconf2010)Yoshinori Matsunobu
 

More from Yoshinori Matsunobu (12)

RocksDB Performance and Reliability Practices
RocksDB Performance and Reliability PracticesRocksDB Performance and Reliability Practices
RocksDB Performance and Reliability Practices
 
Consistency between Engine and Binlog under Reduced Durability
Consistency between Engine and Binlog under Reduced DurabilityConsistency between Engine and Binlog under Reduced Durability
Consistency between Engine and Binlog under Reduced Durability
 
MyRocks introduction and production deployment
MyRocks introduction and production deploymentMyRocks introduction and production deployment
MyRocks introduction and production deployment
 
MyRocks Deep Dive
MyRocks Deep DiveMyRocks Deep Dive
MyRocks Deep Dive
 
データベース技術の羅針盤
データベース技術の羅針盤データベース技術の羅針盤
データベース技術の羅針盤
 
Introducing MySQL MHA (JP/LT)
Introducing MySQL MHA (JP/LT)Introducing MySQL MHA (JP/LT)
Introducing MySQL MHA (JP/LT)
 
MySQL for Large Scale Social Games
MySQL for Large Scale Social GamesMySQL for Large Scale Social Games
MySQL for Large Scale Social Games
 
Automated master failover
Automated master failoverAutomated master failover
Automated master failover
 
Linux and H/W optimizations for MySQL
Linux and H/W optimizations for MySQLLinux and H/W optimizations for MySQL
Linux and H/W optimizations for MySQL
 
More mastering the art of indexing
More mastering the art of indexingMore mastering the art of indexing
More mastering the art of indexing
 
SSD Deployment Strategies for MySQL
SSD Deployment Strategies for MySQLSSD Deployment Strategies for MySQL
SSD Deployment Strategies for MySQL
 
Linux performance tuning & stabilization tips (mysqlconf2010)
Linux performance tuning & stabilization tips (mysqlconf2010)Linux performance tuning & stabilization tips (mysqlconf2010)
Linux performance tuning & stabilization tips (mysqlconf2010)
 

Recently uploaded

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 

Recently uploaded (10)

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 

Linux/DB Tuning (DevSumi2010, Japanese)

  • 1. 高性能・安定運用のための Linux/DB システム構築 / 運用技術 松信 嘉範 (MATSUNOBU Yoshinori) サン・マイクロシステムズ株式会社 プリンシパル MySQL コンサルタント
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20. I/O スケジューラの性能差 (InnoDB) ・ I/O スケジューラの性能差は ミドルウェアにも依存する ・ MySQL5.4 は I/O スレッドが 計 16 本あるが、 5.1 では 2 本 ・簡易的なベンチマークでも cfq は I/O スレッド本数が 少ないときは良い性能が 出なかった ・ anticipatory はどんなときにも 悪い性能しか出なかった
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39. SystemTap を使う global oldsort=0; global newsort=0; probe process(&quot;/usr/local/bin/mysqld&quot;).function(&quot;*rr_from_pointers*&quot;).return { oldsort++; } probe process(&quot;/usr/local/bin/mysqld&quot;).function(&quot;*rr_unpack_from_buffer*&quot;).return { newsort++; } probe end { printf(&quot;# of returned rows sorted by old algorithm: %d &quot;, oldsort); printf(&quot;# of returned rows sorted by new algorithm: %d &quot;, newsort); } ----- [root #] stap sort.stp # of returned rows sorted by old algorithm: 0 # of returned rows sorted by new algorithm: 100
  • 40.
  • 41.
  • 42.
  • 43.
  • 44. Q & A