鯖屋のお仕事ってどーよ 大規模サイトの為のLinuxカーネルチューニング

Slides:



Advertisements
Similar presentations
2015年10月20日 ◇小学校 ◇◇◇◇. ・◇◇市の「私物パソコン利用書」 ・画像をテレビ画面に飛ばす.
Advertisements

位置情報と私 木村岳文 / 位置情報と私 / はじめに GPS 付き携帯、ハンディ GPS などを使っ て、お手軽に自分が地球上のどこにいる かを調べられるようになってきました。 このデータをつかって何かおもしろいこ とができそうな予感。 具体的にどうしたらおもしろいかはよく.
Struts VS SAStruts ・ STRUTS と SAStruts を比較します。. Struts のメリット1 STRUTS はディファクトスタンダード。 ↓ プログラマがたくさんいる。 ライブラリ、ツールがたくさんある。 ビジネス案件が豊富。 書籍などの情報元が豊富。
オープンソース GIS 入門コース PostGIS + QGIS で始める空間データ解析 2010 年 3 月 21 日 講師:今木洋大.
こさっきー クラウドの一般的なご紹 介. 目次 1. クラウドとは? 2. なぜクラウドって生まれたの? 3. クラウドってナニが新しいの? 4. クラウドのメリット・デメリット 「クラウド、クラウドって、 “ 雲をつかむような ” 話 だねー」 「昔からあったでしょう?そんな話」
加藤丈治 CBUG PAPI-RAPL の FreeBSD 対応 CBUG 32nd meetings 資料.
FreeBSD4.5環境での IPv6ネットワーク構築
T2V技術 Web製作ラボ 4/25, 2011 hayashiLabo 9.
ATLAS実験データ解析に向けた、長距離広帯域ネットワークにおけるデータ転送
Webプロキシサーバにおける 動的資源管理方式の提案と実装
情報検索概説II 第8回 パソコン組み立てと記憶装置 1999/11/25.
最新ファイルの提供を保証する代理FTPサーバの開発
榮樂 英樹 LilyVM と仮想化技術 榮樂 英樹
Webアプリケーション開発の 基本的なポイント
技術トピックス 2014/10.
オープンソースGIS入門コース PostGIS+QGISで始める空間データ解析
NetBSD以外でpkgsrcを使うZoularis
Flashプレイヤーを使った動画配信 情報工学科 宮本 崇也.
Docker.
Windows Azure 仮想マシン 入門.
仮想化システムを用いて 複数のOSを動かす
CakePHPを業務に導入する Shin x blog 新原 雅司.
IaaS 仮想マシン(VM)をネットワーク経由で提供 負荷に応じてVM数や性能を変更できる ハードウェアの導入・管理・維持コストの削減
ここに若林の絵が入る Ⅰ 従来型サービスの課題 Ⅴ Solaris基盤ヘルスチェックサービス ●従来型サービス Ⅱ 新サービスの概要
Xvfatに関しての議論
技術トピックス 2015/03.
自作組込みOSを エミュレータで 動かしてみた 坂井弘亮 (KOZOSプロジェクト) Twitter ID:kozossakai.
解析サーバの現状と未来 2006/07/18 衛星データ処理勉強会 村上 弘志 現状のシステム構成など 統合解析環境としての整備
技術トピックス 2014/08.
IBMの歴史 発明 System 360 (1964) Hard Disk (1956) DRAM
ファイルシステムとコマンド.
研究の背景 コードクローン ソースコード中に存在する一致または類似したコード片
FreeBSD4.5環境での IPv6ネットワーク構築
2010/12/01 IT講習会 快適なpcの使い方 メンテナンス編.
情報学部のWebサイトを考える 2007年5月14日 石上隆達.
講 義 ガ イ ダ ン ス オペレーティングシステム 第1回.
オペレーティングシステムⅡ 第1回 講師 松本 章代 VirtuaWin・・・仮想デスクトップソフト 2009/10/02.
“所有”から“利用”へ 情報社会とコンピュータ 第12回.
PHP Framework Update symfony 編 株式会社ディノ 月宮紀柳.
さとりすと Satori Ghost Editor 里々ゴーストの統合開発環境を作ったよ page: 1/25
千代浩司 高エネルギー加速器研究機構 素粒子原子核研究所
高知大学理学部数理情報科学科 地球環境情報学研究室 助教授 菊地時夫
講 義 ガ イ ダ ン ス オペレーティングシステム 10/4/07.
オンライン説明会に関する調査 上杉裕也.
2004年度 サマースクール in 稚内 JavaによるWebアプリケーション入門
2003年度 データベース論 安藤 友晴.
導入予定価格円(仮) 導入予定サービス名 こんな繰り返し作業にうんざりしていませんか? 求人ページ 社内システム
自由席にしています。 資料のある席へお座りください.
都立江北高校授業案資料 文字によるコミュニケーション.
製品情報 Windows Server 2003のサポート終了をむかえ、ファイルサーバーの入れ替えを検討されていらっしゃる方も多いのではないでしょうか?既存のファイルサーバーをいきなりクラウド化するとインターネット回線の影響で、エクセルやワードのようなサイズの小さなファイルでさえ、開くまでに時間がかかってしまうことがあります。
グリッド M1 kawai.
アップデート 株式会社アプライド・マーケティング 大越 章司
情報数学5 グループ課題(5/7) 1E16M007-3 伊藤達哉 1E16M002-5 阿部知也 1E14M070-5 南元喜 1E16M069-8 峰晴晃優.
伺かのための三角関数講座  うかべん大阪# /05/03
Part time jobs in restaurant
テーブル設計を後から変更 現場で使える小技のご紹介 株式会社ジーワンシステム 生島 勘富(イクシマ サダヨシ)
クラウドにおけるVM内コンテナを用いた 自動障害復旧システムの開発
クラウドにおけるVM内コンテナを用いた 低コストで迅速な自動障害復旧
インターネット             サーバーの種類 チーム 俺 春.
オブジェクトストレージ(SDS)と ネットワークの仮想化技術(SDN)の 活用方法について
先輩チューター ○○エリア 名前 (○○大学 ○○部 ○年)
VMが利用可能なCPU数の変化に対応した 並列アプリケーション実行の最適化
コンピュータにログイン 第1章 コンピュータにログイン 啓林館 情報A最新版 (p.6-13)
Peer-to-Peerシステムにおける動的な木構造の生成による検索の高速化
ダスキン サービスマスターの仕事 清潔で快適な環境づくりのお手伝い! 業務向け もっと たくさんある
人を幸せにするアプリケーションの開発 2004年度春学期 大岩研究プロジェクト2 2004年4月8日(木) 発表:武田林太郎.
ルネサスソリューションズ 宗像尚郎 ( ) CONFIG_EMBEDDED ルネサスソリューションズ 宗像尚郎 ( )
小学校では今, 情報モラル教育への取り組みは
第13回(通算29回) 福祉対象者への相談援助 合意形成
自由席にしています。 資料のある席へお座りください.
Presentation transcript:

鯖屋のお仕事ってどーよ 大規模サイトの為のLinuxカーネルチューニング 関西オープンソース 2004 ステージ 2004年10月22日 13:45 - 14:00 もりかわひろかず

はじめに SunOS4, Solaris2, FreeBSD系で育ってきた鯖屋が、1999年に Linuxでの大規模サーバ(大規模なweb、メール、共有型仮想サーバ)の運用を試行錯誤しながら行い、肌で感じた Linux kernel の体験記(格闘記)をお話し、それを通じて運用の現場の姿を感じていただけたらと思います 実感体験記 OSの研究者でもなく、エバンジェリストやエンスージャストでもない ただ道具としてOSに関わってきた鯖屋が体と心で関わってきた話をしたいとおもいます 鯖屋の運用の現場を笑ってやってください 複数のユーザを相乗りさせるシェアード型のインターネットサーバの運用やってます

遠い昔… A long time ago in the UNIX far, far away…. 1994年頃からインターネットサーバのSIを手がけていた その頃、Solaris 2系が安定してきて、SunOS4を捨ててSolaris 2系に移行していた PC-UNIXは*BSD系しか選択肢無し 当時、Linux系はnetwork系の信頼性が無いという話で、実際のサービスには使わなかった (冒険はしたくなかった) 安定性があり、運用ノウハウが多いOSを選択した

枯れたOS 実際の業務に使用するOSの選択に際しては、枯れたOS(信頼性があり、安定して、ノウハウも蓄積された)を選択するでしょう 大規模なサーバ運用にも枯れたチューニングの定石があった

なぜチューニングが必要なのか 一般的な使用状況を想定してる 安全性を確保するためにリソース制限をしている 無駄なリソース浪費を避けるため 安全性を確保するためにリソース制限をしている open files, memory, process…etc 各ユーザごとのリミット 何につかうのか? その用途に合わせてチューニングする必要がある リソースを消費してもスピード優先という用途 DBのような巨大アプリを動かすという用途 たくさんのユーザを安全にさばくという用途 もちろん拡張性は十分考慮して設計されてますが 最近のOSは運用状況で自動的に拡張して、無駄な消費ふせぎつつ運用のしやすさと拡張性を向上させている アベーラビリティとスケーラビリティ

定石 Solaris系では /etc/system の maxusers, rlim_fd_max, rlim_fd_cur maxusersを変更することによってkernel内のテーブルサイズを自動的に調整する (BSD系であるSunOS4から引き継いだ) あとはnddでdriverのconfigurationをさわる 挙動を見てNetwork系のパラメータを変更 大規模なDBサーバやroot DNSにも実績がある 世の中に書籍やよくまとまったtuning 系の tips Web Siteがあった たとえばSolaris系ではarpテーブルの保存期間が長いので ネットワーク機器を入れ替えた場合に孤立してしまう場合があるのでそのあたりは変えます

定石 (2) FreeBSDでは 学術分野での長年のノウハウ蓄積 過負荷で悲鳴をあげても予測の範囲 (調整の範囲) Kernel configuration の maxusers, NMBCLUSTERS をさわる 今は maxusers=0 にしておけばハードのスペックを見てよしなに設定してくれる kernel recompile すら不要で /boot/loader.confにホゲっておわり FD_SETSIZE, SOMAXCONN系の調整 sysctl と アプリ側の調整 学術分野での長年のノウハウ蓄積 過負荷で悲鳴をあげても予測の範囲 (調整の範囲) ユーザ毎の limit は /etc/login.conf 3.x から全然さわる必要がなくなった そんな比較的保守的なスタンスでサーバ運用やってたのですが…

Linux を使え! 1999年 Linuxバブル全盛期 営業サイドから Linux を使えとのご命令 お客様のニーズに早く対応すべき Linux 2.2.11-ac? ぐらいから安定してきたという噂があった ちょいとLinuxさわってみるのもいいかな まー UNIX(like)だしなんとかなるかー というわけでテスト運用始めてみた

おどろいた! おそろしく速い filesystem I/Oが早いのは大規模なWebサーバにとってはうれしい さっと動かしたら安定してるじゃん 恐れていた障害時の不整合は皆無 意外と丈夫じゃん I/Oが早いのは大規模なWebサーバにとってはうれしい さっと動かしたら安定してるじゃん 結構 Linux ラヴ☆かもぉ 非同期なので早くてあたりまえなのだが、なかなか対障害性もよかった Sendmail社が行っていたセミナー資料でlinuxの非同期ファイルシステムは mail spoolには絶対つかうなと書いて合ったがまったく問題なし

限界まで鯖をシバク Size matters not. こんな鯖 ps ax | wc -l 1115 cat /proc/net/sockstat Sockets: used 643 TCP: inuse 637 orphan 45 tw 71368 alloc 641 mem 796 Apache combined format の access log が 1日で6GB以上 サーバのスペックはあまりいえねー 大規模なサーバは 某気象情報サイトの台風接近時期の平日のお昼休みと、定時前から定時後直後 某世界的スポーツの国際試合の全世界向け公式サイトとか これがいわゆる共有サーバで稼働していた

定石(3) 2.4.x Linux では システム中のファイル・ディスクリプタ数の上限を緩和する echo "32768" > /proc/sys/fs/file-max ユーザ毎のファイル・ディスクリプタ数の上限を緩和する ulimit -n unlimited ユーザ毎の起動するプロセス数の上限を緩和する ulimit -u unlimited セマフォの設定の上限を緩和する echo "250 32000 128 1024" > /proc/sys/kernel/sem ネットワークキューの上限を緩和する echo ”2048" > /proc/sys/net/ipv4/tcp_max_syn_backlog もちろん値は環境依存なのでハードウェアや用途によってかわります 最近ではいろんな書籍Webで情報が出ていますし、アプリベンダーからも運用tipsとしてまとめらているのをよく見かけます 2.2ではもっといろいろさわってやらないといけなかったのですが2.4以降では楽になっています

不可解な挙動 Linuxの心が解るまでの道のり 定石の調整はやっていたが… ふつーにつかってるかぎりはすごく安定していた むちゃな使い方したらMM系で不可解な挙動 メモリーは余裕があるのに突然のOOM-kill ドライバからはバッファが足りないとの悲鳴 なぜ急にメモリーが足りなくなるのぉ なぜ極端にパフォーマンスが悪くなるのぉ 2.2の途中までは過負荷時に突然死も ぐはっ吐血! メモリーマネージメントサブシステム メモリーは余裕があるのにfilesystemのパフォーマンスが極端にわるくなる

Linuxの心が解るまでの道のり(2) 当時は、Linuxを用いた大規模サーバの運用ノウハウの情報が不足 おしえてGoogle! しかし、当時はまとまった情報は無し できるヤツはそんなの当たり前でわざわざとりたてては書かない!? kernelあげろ、メモリー増やせ攻撃 本質の議論無し ユーザ系のmlでは 本気で大規模サーバにつかっている人っているんかなー

不可解な挙動の例 No! Try not. Do, or do not. There is no try. パフォーマンスがよかったので採用したIntel EtherExpress Pro/100 で当時 2.2 のドライバ eepro100 が過負荷時に eth0: can’t fill rx buffer のメッセージをはきまくる (その当時は Linux でそのNICを使うことを嫌う人もたくさんいた) すでに過去の問題ですが、典型的な例として提示します

不可解な挙動の例(2) Googleで検索したら、同じように困ってる人ちらほら ズバリの解決策は見付けられなかった お決まりの監視 ふつーに使ってる限り出ないもん お決まりの監視 vmstat 1 watch -n 1 ’cat /proc/meminfo’ watch -n 1 ’cat /proc/slabinfo’ watch -n 1 free すでに過去の問題ですが、典型的な例として提示します

不可解な挙動の例(3) どうも、そのメッセージを吐く時は MemFree が極端に少なくなっているっぽい しかし、Buffres, Cached はふんだんに確保されている そのあたりに秘密がありそう /proc/sys/vm あたりで tuneable な物を探すとbdflushとfreepages(2.2の場合) が怪しい

不可解な挙動の例(4) /usr/src/linux/Documentation を読む ここでもカルチャーショック受る メンテされてない(^^;;; man も嘘書いてる場合もあるし… /proc/sys/vm/freepages を増やしてやると現象はおさまるようだ freepages をキーワードにざっと kernel の source を追っかけてみた なんか謎な閾値やら定数やら… Memory Management subsystem 怪しいなぁ

Linuxの心が解るまでの道のり(3) Use the source, luke! 「KISS principle」”Keep it Simple, Stupid”, “Keep it Simple and Small”には共感するが… コア開発者が議論している kernel mlやMM ml をあさる MMごっそりかえちゃえ的なノリ AndreaさんとRikさんが喧嘩してるしぃ 仕切りまくる Alan Cox 氏 慎重な Linus 氏 大体においては上手くいく… (ラテン系?)

Linuxの心が解るまでの道のり(4) No! No different! Only different in your mind. 猥雑だけどパワフル *BSD系にはない面白さ (猥雑さが嫌いという意見もよく解るけどね) 自分が同時代的に参加しているのだという気になるし、参加せざるを得ない面白い開発コミュニティー というわけで自分も何かしようと1999年から kernel tuning 系 tips を Web siteで書き始めた (今ではいろんな所にいっぱい情報が出てます)

枯れないOS とーれとれぴーちぴちLinux “枯れ”とは無縁 日々改善、日々実験 ハードウェアやnetwork環境はものすごく変化している それにつれて kernel も変化している 現実のサービスに使っていいかどうかは議論があるが(安定性、信頼性の面で) 処理が速いのは得難いメリット “今”はかなりいいよね いつも”今”が旬 いろいろ格闘しながら解ったこと 他のOSももちろんそうなんだけど、ダイレクトに見えてしまうところが面白い 正直いって ありきたりだけども用途用途で使いわれるのがよい お客様はlinuxつかいたい linux環境でないとつかえないアプリも多いし

おまけ 最近のディストリビューションのkernelなら安定してます 特にサーバ用として提供されている物であれば変更を加えることも不要 (のはず) 自身でkernelをcompile場合は、-ac, -aa, -mm 等のpatchを吟味した上で、必要に応じた物を当てたほうがいいです 素のリリースのままでは不具合がでるパターンもある 2.4.x では -rmap は有効かも そろそろ 2.6.x にかえる時期かも RvR

May the source be with you! http://www.kernel.org/pub/linux/kernel/people/alan/ (-ac patch) 旅に出ますた! http://www.kernel.org/pub/linux/kernel/people/andrea/ (-aa patch) http://www.kernel.org/pub/linux/kernel/people/akpm/ (-mm patch) http://linux-mm.org/ the home page of Linux-MM http://surriel.com/patches/ Rik van Riel's Linux kernel patches (-rmap VM patch) http://www-didc.lbl.gov/TCP-tuning/ TCP Tuning Guide http://www.nxhack.tarumi.kobe.jp/linux_kernel_tuning.html 私のWeb Alan Cox Andrea Arcangeli Andrew Morton