Skip to content

Instantly share code, notes, and snippets.

@kentatogashi
Last active March 9, 2019 18:20
Show Gist options
  • Save kentatogashi/30e8a80e1f2625daedcad3d4281ae8f6 to your computer and use it in GitHub Desktop.
Save kentatogashi/30e8a80e1f2625daedcad3d4281ae8f6 to your computer and use it in GitHub Desktop.
  • MySQLとPostgreSQLの違い。
    • ライセンスの違い
      • MySQLは、GPLと商用のデュアルライセンス。
      • PostgreSQLは、BSDライセンス。
    • プロセスとスレッドの違い
      • MySQLは、マルチスレッド。
      • PostgreSQLは、マルチプロセス。
  • NAT越えの技術を把握していますか。(http://www.wata-lab.meijo-u.ac.jp/file/seminar/2018/2018-Semi1-Tetsu_Naruse.pdf)
    • STUN
    • TURN
  • コンテナやVM環境を仕様に基づきデプロイツール等を利用して作成することはできますか。
    • コンテナは、Dockerfileで、VMは、ansibleで作成できる。
  • DRBD+Heartbeat、MySQLレプリケーション等を用いて、クラスターを構築したことはあるか。
    • docker nginx pacemakerで、クラスタを試してみる。
  • WebやメールやFTPの高負荷に対する手法を複数説明できますか。
    • FTPについては、対象ユーザのFTPサービスを落とす、アップロード、ダウンロード速度に制限をかける、同時接続数を制限する等。
    • Webについては、対象ユーザのWebサービスを落とす、同時接続数で制限する。cpulimitを使う方法もある。
    • メールについては、対象ユーザのメールサービスを落とす、同時接続数を制限する、バウンスメール時のキューイングしておく時間を減らすなど。
  • MySQLやPostgreSQLの状況に応じたバックアップや高負荷対応手法を説明できますか。
    • 定期的に、mysqldumpやpsqlでダンプファイルを取得し、別立てのバックアップサーバに保管する。
    • CPUなのかI/Oなのか確認。スロークエリログなども確認。実行クエリの見直し。クエリキャッシュや割り当てメモリを増やす。同時接続数を制限するなど。
  • マルチスレッド、マルチプロセスそれぞれのメリット。
    • マルチスレッド
      • メモリ使用率が低い。コンテキストスイッチで、カーネルが要する時間がプロセスよりも少ない。同時実行スレッドによるデータ変更の際もミューテックを使用して、該当セクションを保護するだけで済む。
      • 1つのスレッドがクラッシュすると全体に影響が及ぶ。プログラミングミスが起こりやすい。スレッドサーバでの同期バグ。ミューテック競合。
    • マルチプロセス
      • 不正なサーバプロセスがあってもサーバ全体へ影響が出ない。1つの実行スレッドのみを頭に入れれば良いのでプログラミングミスが起きにくい。個々のプロセスが専用のアドレス空間を保つため、プロセス間での相互作用が大きくならない。
      • 子プロセスが分岐した場合、大きなメモリセグメントが不要にコピーされる可能性がある。プロセス間でデータを共有するのに手間がいる。プロセスの作成によりカーネルに多くのオーバーヘッドを強いる。プロセス間のコンテキストスイッチにより多くの時間がかかる。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment