タグ

linuxに関するCraftworksのブックマーク (41)

  • おそらくはそれさえも平凡な日々: サーバーマシンのコア数に応じてworker数を調整する方法

    PSGI/Plackアプリケーションの起動方法いろいろと番環境アレコレ 便乗ポスト。最近は、上記内の「シェルスクリプトでラップする方法」で運用していることが多いです。その場合のone more tips. appサーバーごとにマシンスペックが違う場合がたまにあって、その場合マシンごとに worker数を調整したいけど、deployの都合上サーバー起動スクリプトは同じやつを使いた いってことがあります。 そこでおすすめなのが、CPUコア数に応じてworker数を計算する方法です。 シェルスクリプトの場合、 % cat app.sh #/bin/sh NCPU=`getconf _NPROCESSORS_ONLN` WORKERS=$(expr $NCPU \* 5) exec plackup -E production -s Starlet --max-workers=$WORKERS と

  • mixi Engineers’ Blog » Linux Programming、epollの話

    お久しぶりです、初めての日の夏に圧倒されているトールマエサカです。 今日はLinuxにおけるネットワークプログラミング関連のネタです。分散データベースサーバの開発過程で最近よくLinuxのepollというイベントハンドリング機能を使っています。これがまた優秀な機能なので紹介します。 このContextでいうイベントハンドラーはサーバがクライエントのリクエストを処理するためのメカニズムです。イベントの感知と通知は大雑把にいうと以下の三つの処理で構成されています: 一つもしくは複数のディスクリプタを監視 ディスクリプタの準備が整うまでハチ公のごとくひたすら待ち続ける 準備が整ったディスクリプタの通知 アプリケーションでの実装は一昔までselect(2)、もしくはpoll(2)というシステムコールで行われていました。二つとも役目は同じですがselect(2)の場合、kernelをいじらない限り

    mixi Engineers’ Blog » Linux Programming、epollの話
  • 原因調査用Linuxコマンド | 外道父の匠

    サーバの動作に異常が発生した際に原因を探るためのLinuxコマンドで、自分用のメモです。 全てmanとかググったら出てくるので説明は適当です。思いついたら後で追記していくかもです。 対象はDebian Squeezeになります。 全てパッケージインストールできるもので、パッケージ名は [in packagename] としてあります。 各所よりコメントありがとうございます。 良さ気なコマンドは追記していきます。 <追加したコマンド> * telnet (+コメント wget, netcat) * arp (+コメント arpwatch) * pstree * fdisk コメントに gdisk * host, dig * watch * reboot

    原因調査用Linuxコマンド | 外道父の匠
  • tarコマンドを負荷制御(bwlimit指定)して実行する方法

    cstream - direct data streams, with bandwidth limiting, FIFO, audio, duplication and extended reporting support. ざっくり言うとデータストリームの制御とかできるよ!っていうコマンドっぽいです。オーディオアプリケーションのデータレートのエミュレーションとかで利用されているそうです。オプションではcstreamコマンドの-tを使うのですが、以下がmanでの内容になります。 -t num    Limit the throughput of the data stream to num bytes/second. Limiting is done at the input side, you can rely on cstream not accepting more than thi

  • うるう秒のあとにMySQLなどのCPU使用率が高騰する件について - SH2の日記

    2012年7月1日のうるう秒のあとに、MySQLJavaなどのCPU使用率が高騰する事象が報告されています。 CPU %user %nice %system %iowait %steal %idle 08時30分01秒 all 0.02 0.00 0.02 0.04 0.00 99.91 08時40分01秒 all 0.02 0.00 0.02 0.08 0.00 99.88 08時50分01秒 all 0.02 0.00 0.02 0.03 0.00 99.92 09時00分01秒 all 0.11 0.00 0.13 0.04 0.00 99.72 09時10分01秒 all 23.02 0.00 29.09 0.11 0.00 47.78 09時20分01秒 all 23.11 0.00 29.08 0.06 0.00 47.75 09時30分01秒 all 22.85 0.00

    うるう秒のあとにMySQLなどのCPU使用率が高騰する件について - SH2の日記
  • xargs を使ってカジュアルに並列処理 - たごもりすメモ

    シェルからでも重い処理というのはちょこちょこあって、例えば超デカいログファイルを移動して圧縮したりというお仕事は世界中のあらゆる場所で毎日行われていたりする。コマンドラインからでも大量の圧縮済みログファイルをいっぺんに展開したい、とか。 あるディレクトリ以下に存在するたくさんのファイルを(圧縮済みのものを除いて)全部 bzip2 圧縮したい!と思ったら、とりあえずさくっと次のようにコマンドラインで叩けばいい。 $ find . -not -name '*.bz2' | xargs bzip2 これで、まあそんなに問題なく効率的にbzip2圧縮ができる。だがしかし。 最近は複数コアのCPUが普通に転がってるし、あまつさえHyperThreadingが有効になってたりしてOSから見える論理CPU数がハンパない。普通に8とかある。その一方で複数コアを使用してくれるコマンドというのはあんまりなくて

    xargs を使ってカジュアルに並列処理 - たごもりすメモ
  • Linuxのサーバをリモートから強制的にOSリブートする - 元RX-7乗りの適当な日々

    先日、諸々の都合で遠隔にあるテスト環境のサーバ(Linux)のカーネルパラメータを弄っていたのですが、ちょっと設定(メモリまわり)がイキすぎてしまいw、コマンド実行というかforkできなくなってしまった(Cannot allocate memory...)。 んで、shutdownコマンドも実行できなくなったので、直そうと思ったのですが、色々弄った&時間がなかったこともあり、一旦OSを再起動しちゃいたいな、と(汗 が、遠隔にあるサーバなので、物理的な電源スイッチON/OFFができない(厳密には出来る環境ではあったのですが、このサーバはそこに入ってなかったw)。ので、SysRqキーを送ることにした。 やり方 少し無理矢理感はありますが、 # echo b > /proc/sysrq-triggerを実行すると、強制的にリブートがかかります。 ただし、ファイルシステムのsyncとかumount

    Linuxのサーバをリモートから強制的にOSリブートする - 元RX-7乗りの適当な日々
  • (ひ)メモ - そんなわきゃない>DNS RRはロードバランサの座を奪い返せるか

    チープなDNSラウンドロビンは高価なロードバランサの座を奪い返せるか つっこみどころが満載スギなのは脇においておいて、金をかけないなら、DNSラウンドロビンじゃなくて、せめて、件の記事でも紹介されている Apache 2.2のmod_proxy_balancer か、Apache 2.2じゃなくても使えるreverse proxy系の実装たち、 POUND mod_backhand Perlbal を使うべきでしょう。 んで、「L7ロードバランサ(要はreverse proxy)なんていらねっす。セッション? んなのmemcachedでシェアすりゃいいんじゃん。その方がスケールアウトしやすいしー」という向きには、LinuxでL4のロードバランサするのをオススメでします。まともなL4ロードバランサが手に入るのに、金銭的コストはゼロですってよ、オクサン! Linux Virtual Serve

    (ひ)メモ - そんなわきゃない>DNS RRはロードバランサの座を奪い返せるか
  • これからの「GNU Screen」の話をしよう

    縦分割が目的で使い始めた開発版の GNU Screen。CVS、Subversion、Gitとリポジトリを追いかけていると、他にも便利な機能があることが分かってきました。ここ半年ほど主だった変更はありませんが、4.1.0 のリリースに向けてドキュメントも整備されてきたようですので、2年ほど使用してきて分かってきた変更点をまとめようと思います。 4.1.0における変更点 ここで取り上げる変更点は次の通り。詳細は ChangeLog などを確認してください。 新しい機能 縦分割 レイアウト ウィンドウグループ マウス操作のサポート コマンドメッセージの抑止 外部からのコマンド問合せ 拡張されたコマンド/機能 最大ウィンドウ数の増加 ウィンドウ番号の相対指定 イベント発生ウィンドウの装飾設定 設定で使用可能な変数/書式の追加 ウィンドウリスト/画面リストの拡張 その他 256色サポート コマンド

    これからの「GNU Screen」の話をしよう
  • 50 Most Frequently Used UNIX / Linux Commands (With Examples)

    50 Most Frequently Used UNIX / Linux Commands (With Examples) This article provides practical examples for 50 most frequently used commands in Linux / UNIX. This is not a comprehensive list by any means, but this should give you a jumpstart on some of the common Linux commands. Bookmark this article for your future reference. Did I miss any frequently used Linux commands? Leave a comment and let m

  • https://upload.wikimedia.org/wikipedia/commons/9/9a/Gldt1009.svg

  • Intel Mac で トリプルブート その1 (Snow Leopard でディスクパーティション準備編) » sa-sa-ki.jpのblog

    先日Mac miniでShow Leopard、Windows 7、Ubuntu 9.04 のトリプルブートに成功したので、その手順をご紹介します。 ※作業はIntel MacにShow Leopardがインストールされている事を前提としています。 またBootCampでWindowsをインストールしている場合はWindows上の必要なデータを保存した上で、Boot Camp アシスタントを使って単一ボリュームに戻してWindowsを削除してください。 ではまずWindows 7とUbuntu 9.04をインストールする領域を用意する為にディスクユーティリティを起動します。 �Finderを起動して[アプリケーション]→[ユーティリティ]→[ディスクユーティリティ]を起動します。 ハードディスクを選択して、[パーティション]タブを選択します。 ハードディスクのパーティションを分割します。

  • Linux のプロセスが Copy on Write で共有しているメモリのサイズを調べる

    Linux は fork で子プロセスを作成した場合、親の仮想メモリ空間の内容を子へコピーする必要があります。しかしまともに全空間をコピーしていたのでは fork のコストが高くなってしまいますし、子が親と同じようなプロセスとして動作し続ける場合は、内容の重複したページが多数できてしまい、効率がよくありません。 そこで、Linux の仮想メモリは、メモリ空間を舐めてコピーするのではなく、はじめは親子でメモリ領域を共有しておいて、書き込みがあった時点で、その書き込みのあったページだけを親子で個別に持つという仕組みでこの問題を回避します。Copy-On-Write (CoW) と呼ばれる戦略です。共有メモリページは、親子それぞれの仮想メモリ空間を同一の物理メモリにマッピングすることで実現されます。より詳しくは コピーオンライト - Wikipedia などを参照してください。 この CoW に

    Linux のプロセスが Copy on Write で共有しているメモリのサイズを調べる
  • Disk I/Oの使用率を監視するワンライナー - kazuhoのメモ置き場

    iostat -x の %util を監視してしきい値を超えたらアラートメール飛ばしたいなぁと思って crontab 書いた。こんな感じ。 */5 * * * * perl -wle 'my $s = `/usr/bin/iostat -xk /dev/sd[abc] 270 2 | tail -4`; print $s if $s =~ m{\s(?:[0-9]{3}|[5-9][0-9])\.[0-9]+$}m'ポイントは、 iostat の後ろから2つ目の引数がサンプリングを行う秒数 tail で デバイス数+1 することで、最後のサンプルを取り出す 正規表現で50%以上だった場合に標準出力に iostat の結果を出す=メール送信

    Disk I/Oの使用率を監視するワンライナー - kazuhoのメモ置き場
  • 高トラフィックに対応できるLinuxロードバランサを目指して 〜 LVSをNATからDSRへ : DSAS開発者の部屋

    「こんなに簡単! Linuxでロードバランサ」のシリーズでは、 こんなに簡単! Linuxでロードバランサ (1) 〜 LVS + NATで負荷分散をしてみよう こんなに簡単! Linuxでロードバランサ (2) 〜 keepalivedでWebサーバのヘルスチェック こんなに簡単! Linuxでロードバランサ (3) 〜 VRRPでロードバランサを無停止にする こんな流れでNATによる負荷分散システムを構築してきました。 今回はこれを DSR(Direct Server Return) 方式に変更してみます。 「DSRとはなんぞや?」という方は、 ロードバランサの運用.DSRって知ってますか? L4スイッチはDSR構成にすべし こちらでわかりやすく説明されていますので参考にしてみてください。 一般的(?)に大規模システムを構築する場合は、「ネットワーク機器の整備はこの部門」、「サーバの調

    高トラフィックに対応できるLinuxロードバランサを目指して 〜 LVSをNATからDSRへ : DSAS開発者の部屋
  • DSAS開発者の部屋:特集記事『Linuxロードバランサ構築・運用ノウハウ』を公開します

    Linuxロードバランサ構築・運用ノウハウ』を公開します! これはWEB+DB PRESS Vol.37の特集記事としてDSASチームが執筆したもので、技術評論社様の許可を得て今回公開するはこびとなりました。 一口でいうと、「Linux+IPVS+keepalivedを使って、冗長構成(Active/Backup)のロードバランサを作るまで」の解説記事で、 サーバ負荷分散一般についてのはなし Linuxでロードバランサを作ってみる ロードバランサを冗長化 といった構成になっています。 みなさんがLinuxロードバランサを導入・構築・運用する際の一助になれば、DSASチームとしてもうれしい限りですので、是非、ご覧になってください! 第1章 サーバ負荷分散概論 特集のはじめに なぜサーバ負荷分散をするのか? サーバ負荷分散の実現方法 ロードバランサのいる構成 ロードバランサはなにを元に分散す

    DSAS開発者の部屋:特集記事『Linuxロードバランサ構築・運用ノウハウ』を公開します
  • DSAS開発者の部屋:こんなに簡単! Linuxでロードバランサ (1)

    DSASのロードバランサは高価なアプライアンス製品ではなく、LinuxのLVS (Linux Virtual Server)を利用しています。 安価、というか、ハードウエア以外は金銭的コストがゼロなので、一般のクライアントからのアクセスを受ける外部ロードバランサのほかに、内部サービス用のロードバランサも配置しています。それぞれactive, backupで2台ずつあるので合計で4台もロードバランサがあることになります。(こんな構成を製品を使って組んだら数千万円すっとびますね) また、ネットワークブートでディスクレスな構成にしているので、ハードディスが壊れてロードバランサがダウンした、なんてこともありません。 ですので「ロードバランサは高くてなかなか導入できない」という話を耳にする度にLVSをお勧めしているのですが、どうも、 なんか難しそう ちゃんと動くか不安 性能が出ないんじゃないか 等々

    DSAS開発者の部屋:こんなに簡単! Linuxでロードバランサ (1)
  • DSAS開発者の部屋:いかにして冗長構成を作るか 〜DSASの場合〜

    DSASはいかにして可用性を高めているか、ちょっと紹介したいと思います。 今回は概略ということでざざざっと説明します。個別の構成についてはまた回を改めて紹介したいと思います。 │ │ ┌┴┐ ┌┴┐ │ │ │ │ISPの上位ルータ └┬┘ └┬┘ │ │ 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 責任分解点 │ │ ┌┴┐ ┌┴┐ │ ├─[ lb(active) ]─┤ │ │ ├─[ lb(backup) ]─┤ │ │ │ │ │ │L2├─[ Web ]─┤L2│ │SW├─[ Web ]─┤SW│ │ ├─[ Web ]─┤ │ │ │ │ │ │ ├─[ SMTP ]─┤ │ │ ├─[ SMTP ]─┤ │ │ │ │ │ │ ├─[ D B ]─┤ │ │ ├─[ D B ]─┤ │ │ │ │ │ │ ├─[ NFS ]─┤ │ │ ├─[ NFS ]─┤ │ │ │ │ │

    DSAS開発者の部屋:いかにして冗長構成を作るか 〜DSASの場合〜
  • Heartbeatでかんたんクラスタリング(4):ミラーリングツール「DRBD」によるデータ保護 (1/3) - @IT

    1つの例として「SAN」(Storage Area Network)があります。データを格納するストレージ自体が冗長化されている製品も多いですし、サーバをSANに接続するためのHBA(Host Bus Adapter)を二重化することも可能ですが、コストもかさみます。 現在ならば、SCSIブロックをIP化してしまう「iSCSI」も選択肢として挙げられるでしょう。ですが最近までiSCSIは、「iSCSi接続を確立するためのイニシエータが不安定だ」などといわれることもありました。また、データを共有する「NFS」(Network File System)を用いてほかのサーバにデータを保存することもできます。しかし外部にデータを置くとなると、どうしても、その分コストも高くなってしまいます。 最もコストを抑える方法を考えた場合に浮上してくる選択肢がDRBDです。Heartbeatによるサービスの冗長

    Heartbeatでかんたんクラスタリング(4):ミラーリングツール「DRBD」によるデータ保護 (1/3) - @IT
  • CG = Cloud Graphics: XFS チューニング @2TB/映像用

    08/12/02 XFS チューニング @2TB/映像用 チューニングを列挙。まずは mkfs 時のチューニング。 sudo mkfs -t xfs -l size=128m -i size=512 -f /dev/md0 アロケーション・ブロックサイズの変更は失敗した。Ubuntu Server 8.10 x64 では mount できなくなったので、チューニング中止。 ジャーナルのサイズ(-l size=128m)。効果あるっぽい。 inodeサイズ の変更(-i size=512)。効果は微妙。連番のハンドリングが多少良くなる? agcount はデフォルト(32)が最もバランスが良かったので、変更無し。 mount は以下のような感じ。 sudo mount -t xfs -o noatime,nodiratime,osyncisdsync,logbufs=8 /dev/md0 /