Upgrade to Pro — share decks privately, control downloads, hide ads and more …

seminar-20131113.pdf

rrreeeyyy
November 13, 2013
160

 seminar-20131113.pdf

rrreeeyyy

November 13, 2013
Tweet

Transcript

  1. An Empirical Study on Configuration Errors in Commercial and Open

    Source Systems 2013/11/13 中野研究室 吉川竜太
  2. 出典・著者 • 出典 • Symposium on Operating Systems Principles 2011

    • 著者 • Zuoning Yin ら ( Univ. of Illinois at Urbana Champaign ) • Jing Zheng ら ( Univ. of California, San Diego ) • Lakshmi N. Bairavasundaram ら ( NetApp, Inc. )
  3. 背景 - システム障害の原因 • システム障害の中で最も多い原因は「設定ミス」 • ユーザの問題報告の中で最も多いのも「設定ミス」 10% 25% 15%

    20% 31% 設定ミス ハードウェア障害 バグ ユーザの環境 ユーザの知識 ユーザから報告された問題の原因
  4. 設定ミスの種類 COMP-A CentOS MySQL Apache Open LDAP 0 25 50

    75 100 9.7 8.3 11.7 10.4 11.2 8.3 14.5 18.3 10 79 83.4 85.5 70 79.6 パラメータ 互換性 その他
  5. パラメータの誤りの例 COMP-A InitiatorName: iqn:DEV_domain MySQL: autocommit = True • COMP-Aの設定では小文字のみ利用することが出来る

    • 設定が読まれないので、デバイスを認識できない • 設定自体は正しいが… • INSERT文が集中するような環境では高負荷になる
  6. パラメータの誤り • パラメータの誤りを更に分類 • legalなもの • illegalなもの COMP-A: InitiatorName: iqn:DEV_domain

    • 設定自体が正しくないのでillegal • 設定自体は正しいのでlegal MySQL: autocommit = True
  7. legal/illegalの分布 COMP-A CentOS MySQL Apache Open LDAP 0 25 50

    75 100 53.1 46 48.9 38.1 53.7 46.9 54 51.1 61.9 46.3 legal illegal
  8. COMP-A CentOS MySQL Apache Open LDAP 0 25 50 75

    100 4 22 31 19 9 69 26 4 6 11 27 52 65 75 80 フォーマット 不一致な設定値 その他の設定値 illegalな設定ミスの分布
  9. フォーマットエラーの例 (1) • COMP-Aでは小文字の設定値のみ  利用可能 • OpenLDAPでは overlay ppolicy の

    前にppolicy用のスキーマをinclude する必要がある • mysql.soがrecode.soに依存してい るため、この順番でextensionを読 み込むとsegmentation faultで Apacheが落ちる OpenLDAP: include schema/ppolicy.schema overlay ppolicy Apache: extension = mysql.so ...... extension = recode.so COMP-A: InitiatorName: iqn:DEV_domain
  10. 不一致な値の例 (2) my.cnf: max_connections = 300 ! php.ini: mysql.max_persistent =

    400 • MySQLの接続許可数とPHPのMySQLへの接続許可数が不一致 • PHPのMySQL接続許可数の方が小さいべき
  11. 良い反応 (1) • 現象: COMP-Aにおいて /vol/vol1/xxx/data が作成出来ない • 原因: /vol/vol1/xxx/data

    にあるファイルの量 • 良い反応は、以下の様なメッセージをソフトウェアが出す事 > [COMP-A – dir.size.max:warning]: > Directory /vol/vol1/xxx/data/ reached > the maxdirsize Limit. Reduce the number > of files or use the vol options command > to increase this limit
  12. 良い反応 (2) • 左記の例に対する良いメッセージ • MySQLに対し以下のパッチを  当てる MySQLの不一致な値の設定: log_output=“Table” …

    log=/path/to/query.log +if (opt_logname + && !(log_output_options & LOG_FILE) + && !(log_output_options & LOG_NONE)) + sql_print_warning("Although a path was specified + for the --log option, log tables are used. To enable + logging to files use the --log-output option.");
  13. COMP-A CentOS MySQL Apache Open LDAP 0 25 50 75

    100 17.6 13.3 21.8 6.7 11 22.6 26.7 23.6 26.7 23.9 45.2 46.7 47.3 54.9 49.5 14.5 13.3 7.2 11.7 15.5 ピンポイントな反応 はっきりとしない反応 沈黙し失敗する反応 その他 反応の分布
  14. COMP-A CentOS MySQL Apache Open LDAP 0 25 50 75

    100 5 30 12.7 16.7 14.2 3 3 5.7 16.7 32.4 91.9 66.7 81.6 66.6 53.4 初めて使う際 運用している最中 不明 設定ミス発生時の分布
  15. COMP-A CentOS MySQL Apache Open LDAP 0 25 50 75

    100 5 30 12.7 16.7 14.2 3 3 5.7 16.7 32.4 91.9 66.7 81.6 66.6 53.4 フォーマット 不一致な設定値 その他の設定値 設定ミス発生時の分布 複雑なシステムは、 運用されている最中に設定ミスを 持っている可能性がある
  16. COMP-A CentOS MySQL Apache Open LDAP 0 25 50 75

    100 6.3 1.7 20 1.7 6.8 9.7 25 27.3 20 13.3 83.9 73.3 52.7 78.3 79.9 部分的に利用不可 全て利用不可 パフォーマンスに影響 影響範囲の分布
  17. 感想 • (インフラエンジニアとして)読んでて興味深かった • 昨今の Infrastructure as code に通ずる物がある •

    Chef/Puppet/Ansible … gargor • 多分人間の手では(やりたくないし)出来ない • 自分の研究の動機を再認識出来た • keepalivedは全部 quiet failure … • モジュール実装の際は複数の設定値を見ながら       メッセージを出してあげるようにしようと思った