skillup

技術ブログ

サーバー・ネットワーク

大規模Webサービス技術入門 イントロ

投稿日:

一応WEBサービスを日々改修していますが、データが日々ふえ、大規模なサービスの対処法などを勉強する必要があるため、「大規模サービス技術入門」を少しずつ読んでいこうと思います。

ポイント

  • データはディスク→メモリ→キャッシュメモリ→CPUというプロセスを経て、読み込まれる
  • ハードディスクのIOが一番のボトルネック、メモリから比べると10万倍から100万倍の違いがある
  • サーバースペックに関して各ソフトの要件に安全率(2倍ぐらい?)を書ける、簡易的な負荷試験をおこなうなど
  • ロードアベレージが高い場合、CPU,IOのどちらに問題があるかを切り分ける。sarコマンドでともにみることができる。前者は%user,後者はiowaitなどが代表的な指標。
  • チューニングの基本は問題の原因を知り、それを取り除くこと
  • webアプリケーションの場合、アプリの冗長化はロードバランサなどの方法から比較的簡単だが、データべースの分散はデータの整合性を取る関係上、分散が難しい
    CPU負荷→一般的にはデータ量は増えないものの異常に難しい計算などを何段階も行う場合、CPUに負荷がかかる(いわゆる計算系の処理)。CPUバウンドな処理ともいう。一般的にはアプリケーションサーバーがこのような傾向にある。
    IO負荷→大量のデータから任意のものを探すなど、大量のデータを前提とするような処理。一般的にはデータベースサーバーがこのような状態になる
  • 負荷を抑えるプログラムを作るうえでのコツは下記のようなもの
    1 アクセスする回数を減らす
    2 データ量の増加に対して強いアルゴリズム(正比例するようなアルゴリズムをかかない)
    3 データ圧縮や検索技術を使うこと

-サーバー・ネットワーク
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

apacheで複数インスタンスの起動

前回のphpenvがらみの引き続きですが、php5.6と7を共存させ、なおかつWEBアプリで動かす方法を調べたところapacheの複数インスタンスがであれば可能だとのこと。 早速調べなんとかできました …

no image

dockerインストール

ansibleに続いてdockerについて書いていこうと思います。 Contents1 dockerとは?1.1 インストール1.2 イメージ取得&コンテナ作成1.3 commit1.4 参考リンク …

no image

linuxでのherokuのインストール&パスの通し方

linuxでのherokuのインストールやパスの通し方について 原則としてruby入ってないとダメっぽいです。(しかもruby1.8系だと2016年6月現在エラーが出ますので最新バージョンをインストー …

no image

form以外でのPOST送信(というかHTTP通信全般)

前回の記事に引き続きですが、APIを叩く側はformでデータを送るのではなく、コードの中にPOSTする処理を書きます。 選択肢としては curlコマンドを使う file_get_contentsを使う …

no image

SQLインジェクション

セキュリティ関係の知識がぬるいのでちょっとお勉強。 知っていることもあるが復習もかねて勉強を。 Contents1 SQLインジェクションとは?2 被害3 対策4 参考サイト・書籍5 ソース SQLイ …

アーカイブ