タグ

linuxに関するwanijiのブックマーク (31)

  • LinuxサーバでネットワークI/Oで刺さっている接続先を発見する - ゆううきメモ

    Linuxサーバの障害対応で社内で伝統的に使われているテクニック。I/Oで完全にブロックしているポイントを特定するノウハウ。 問題対応のため、怪しいプロセスをstraceしてみる read(2)やwrite(2)でブロックしていることを発見する read(2)やwrite(2)、connect(2)の引数にはファイルディスクリプタ番号がみえる プロセスIDとファイルディスクリプタ番号を使って、/proc//fd/ の中身をみると、ソケットI/Oで刺さっている場合はソケット番号を発見できる netstat からソケット番号でgrepして接続先を発見する [y_uuki@hogehoge ~]$ sudo strace -p 10471 Process 10471 attached - interrupt to quit read(58, <unfinished ...> Process 10

    LinuxサーバでネットワークI/Oで刺さっている接続先を発見する - ゆううきメモ
  • ssコマンドの使い方 - Qiita

    [root@server ~]# ss -help Usage: ss [ OPTIONS ] ss [ OPTIONS ] [ FILTER ] -h, --help this message -V, --version output version information -n, --numeric don't resolve service names -r, --resolve resolve host names -a, --all display all sockets -l, --listening display listening sockets -o, --options show timer information -e, --extended show detailed socket information -m, --memory show socket memo

    ssコマンドの使い方 - Qiita
  • TCP keepalive設定でハーフコネクションを解消

    2台のサーバ間がTCPハーフコネクション状態になる事象が発生した。 TCP keepalive(キープアライブ)の設定でその状態を解消するための手段をメモしておく。 ◆ 構成 サーバAとサーバB ◆ アプリケーション仕様 サーバAがサーバB上のファイルを定期的に取得する。 両サーバ間はTCPコネクションを張り続けている。通信ごとに接続する仕様ではない。 ◆ トラブル サーバBに障害が発生し、サーバBが突然ダウンした。 そのためサーバBからサーバAへのTCPのクローズ処理が行われず、 サーバAだけにTCPの状態がESTABLISHEDで残るハーフコネクションとなってしまった。 LANケーブルが抜けた場合なども同じ状態になるだろうか。 ハーフコネクションの有無は、サーバA、サーバBでそれぞれ "lsof -n"、"netstat -an" などのコマンドを打ち、状態がESTABLISHEDにな

  • 現代ITインフラの王道をゆくLinuxパッケージ管理の基本構成 | 外道父の匠

    RedHat系におけるRPMパッケージを扱うYUM、Debian系におけるDEBパッケージを扱うAPT、これらはサーバー管理において重要なわけですが、絶妙な度合いで、おざなりに扱ってもわりとなんとか運用出来てしまう感があります。そのため今一度、こんな感じが今風のスタンダードじゃないっすかね(キリッ という構成を説明してみます。 ぶっちゃけ、たいしたことないネタの集合体なので、タイトルに下駄を履かせました。 そもそもパッケージは必要なのか 言うまでもなく必須です。理由は、インストール物のファイル管理が容易になるのと、インストール時間を短縮できるからです。既存のパッケージでconfigureオプションが物足りない時や、RPMパッケージが存在しない場合は作成することになります。 最近はプロビジョニング・ツールによって全て自動化できるので、超簡素なコンパイルのものはレシピに落とし込んで終わりにした

    現代ITインフラの王道をゆくLinuxパッケージ管理の基本構成 | 外道父の匠
  • NTP設定 - とあるSIerの憂鬱

    環境 RHEL5 ( ntp-4.2.2p1 ) RHEL6 ( ntp-4.2.4p8 ) NTPは結構微妙な修正を入れてくるのでバージョンが異なる場合は注意が必要。 manが当該バージョンの情報源としてはまず優先。 最近の変更 RHEL6ではRHEL5で /etc/init.d/ntpd のみで行っていたことを /etc/init.d/ntpdate と /etc/init.d/ntpd に分離している。 ntpd起動前のntpdate実行について分離している。ntpdを使うのであればntpdateも同時に有効にするべき(ntpdate実行を避けたい場合以外)。 設計 何もよりも先に 『参考』にあげた富士通の『Linuxユーザーズマニュアル RHEL6編』がNTPの説明として詳しい・わかりやすい。まずはこれを読む。 NTPサーバの階層設計 NTPを使う目的は『正しい時刻の維持』と『時刻

    NTP設定 - とあるSIerの憂鬱
  • Etsukata blog: FreakOut DSP 入札サーバの CPU 使用率を 30% 削減する Performance Tuning

    はじめに 勤務先の FreakOut 社では RTB で広告枠を買い付ける DSP の開発・運用を行っています。RTB とは、インターネット広告のインプレッションが生じる毎に、広告枠の競争入札を行う仕組みです。 DSP とは、 RTB において、競争入札をする側のシステムになります。広告枠/広告を見ている人 に対し、最適な広告を、最適なタイミングで届ける機能を広告主に提供する仕組みです。 FreakOut DSP は最適な広告探索・入札価格調整のため、非常に多くのデータを参照し、沢山の演算処理を行います。広告を見ている人が過去にアクセスした Web ページの情報や検索ワード、さらに 広告がクリックされる予測確率(過去のログから機械学習で算出) などを参照し、入札価格を決定するのです。そのため、DSP で入札を担当するサーバは CPU がボトルネックになっており、台数も数百台に嵩んでいます。

  • cachectld〜無駄なページキャッシュの削除を自動化〜 | メルカリエンジニアリング

    原稿の執筆が一段落して心に余裕が出てきた@cubicdaiyaです。 今回はサーバを運用しているとありがちなページキャッシュに関する問題とメルカリのアプローチについて解説します。 Fluentdによるログ転送 話は変わりますが、メルカリの各サーバ上ではプログラムが吐いたログデータをKibanaやNorikraといった各種コンポーネントに転送するためにFluentdが稼働しています。各ログデータは原則単一のファイルに追記されてFluentdのtailプラグインによって各所に転送されていきます。 ログデータのサイズはまちまちで、1日で数GB程度のログデータもあれば数十GB以上のログデータもあります。 ページキャッシュと巨大なログファイル 各サーバに吐かれるログデータのサイズはサーバに搭載されているメモリのサイズと比べると1日分だけでもかなりの量になります。そして、このように絶えず書き込まれる巨

    cachectld〜無駄なページキャッシュの削除を自動化〜 | メルカリエンジニアリング
  • https://mrtc0.github.io/slides/ltdd-16-ssh-auth.html

    waniji
    waniji 2015/07/15
    AuthorizedKeysCommand初めて知った。便利だ。
  • Linuxサーバに搭載されているCPUコア数の確認 - 元RX-7乗りの適当な日々

    この前、若手に聞かれたので、ここにも書いておく。 好みでは有るが、可能な限り数字のみで標準出力に出せるようにしておくと、スクリプトの中などで並列実行数を動的に定義しやすい。 ちなみに下記の前提は、CentOS 6.6 & 56コア(!)のサーバで確認している。 nproc # nproc 56一番簡単なやつ。 getconf # getconf _NPROCESSORS_ONLN 56getconfでも拾える。 /proc/cpuinfo # cat /proc/cpuinfo | grep -c "processor" 56皆さん、ご存知の通り、 /proc/cpuinfo は多くのCPU情報を取得することが出来る。 余談だけど、 /proc/cpuinfo に含まれる"physical id"はどの物理ソケットか、とか、"core id"を見ると物理コア(HT関連などで論理コアの紐付き

    Linuxサーバに搭載されているCPUコア数の確認 - 元RX-7乗りの適当な日々
    waniji
    waniji 2015/07/15
  • Linuxのしくみを学ぶ - プロセス管理とスケジューリング

    Linuxのしくみを学ぶ - プロセス管理とスケジューリング」公開ページ こちらのページはSoftware Design誌 2009年12月号の記事「Linuxのしくみを学ぶ - プロセス管理とスケジューリング」の公開ページです。 「ハイパーバイザの作り方」も公開中ですので、こちらも是非ご覧ください。 公開中の記事 HTML PDF ePub mobi Kindle 原稿データ 全ての原稿データはgithub上で公開されています。 Pull RequestやIssuesを通じて文章の誤り訂正や解説の追記、各フォーマットの表示の改善などのコントリビューションを受け付けています。 改善された記事は随時このページにアップロードしていきます。 記事に関するご質問 記事を読んで何かわからなかった点があったり、疑問に思ったことがあれば以下の連絡先に問い合わせてください。 Twitter: @syuu

    waniji
    waniji 2015/05/21
  • GitHub - Shinpeim/process-book: Unix系システムのプロセスについて日本語で解説しています

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - Shinpeim/process-book: Unix系システムのプロセスについて日本語で解説しています
    waniji
    waniji 2015/05/19
    分り易くて良かった
  • ロミオとジュリエットで学ぶ「ポートが開いてる」と「Listenしている」の違い - Qiita

    ○のときだけロミオは会話ができます。 「ポートが閉じている」= 窓が閉じている 窓が閉じている場合は、ジュリエットがどれだけロミオを待ち構えていても、会話はできません。 技術的に言うと、「ポートを閉じる」とは、パケットを転送しないで捨ててしまうことです。 やり方は何通りかあって、よくつかわれるのは次の2つの方法です。 ルータ機器によるファイアーウォール機能でポートを閉じる 城門が閉まっていると、敷地内に入ることすらできません。 ルータ(城門)でポートを閉じると、サーバ(屋敷)にパケット(声)が到達できなくなります。 クラウドの場合は物理的なルータを扱えないことが多いですが、似たような機能がサービスとして用意されてたりります。 例えばAWS EC2の場合はSecurityGroupsという機能がファイアーウォールの役割を果たしてくれます。 サーバのパケットフィルタ機能でポートを閉じる 城門(

    ロミオとジュリエットで学ぶ「ポートが開いてる」と「Listenしている」の違い - Qiita
    waniji
    waniji 2015/04/19
  • /var/lock/subsys/について · さよならインターネット

    February 24, 2014 init.dスクリプトの中に/var/lock/subsys/という文字列を見たことはあったが 何をしているのかまで追ったことはなかった。 (今さら)Linuxでサービスを登録する - あしのあしあと こちらのページに大切なことは全て書いてあった。ありがたい。 「インスタンス起動時にRoute53でゴニョゴニョして、 インスタンス終了時にゴニョゴニョしたい」 という機能を実装するのに、init scriptを作成するのはよくあることだと思う。 その際、stopが上手く動かなく、その原因が/var/lock/subsys/であったので 備忘録として記録しておく。 /etc/init/rc.conf # rc - System V runlevel compatibility # # This task runs the old sysv-rc runlev

  • Unixデーモンの仕組み

    Home Subscribe Unixデーモンの仕組み 12 March 2015 おはこんばんちは!! 尾藤 a.k.a. BTO です。 みなさん、Unixデーモンよく使ってますよね。 Webエンジニアなら、Webサーバ、メールサーバ、DBサーバ、cronなどがよく使われるのではないでしょうか。 24時間365日黙々と働き続けるUnixデーモン達。 身近な存在だと思いますが、実はどういう仕組みで動いているのかご存じない方も多いのではないでしょうか。 先日、オトバンクでUnixデーモンの仕組みについて勉強会をやったので、その内容をまとめます。 デーモンとは では、デーモンとはいったい何なのでしょうか。 Unixライクシステムにおいて、バックグランドで動作して様々な処理を実行してくれるプロセスがデーモンです。 デーモンには明確な定義はありませんが、だいたい次のような条件を満たすプロセスが

    Unixデーモンの仕組み
  • glibcのgethostbyname関数に存在するCVE-2015-0235(GHOST)脆弱性について - ブログ - ワルブリックス株式会社

    glibcのgethostbyname系関数に脆弱性の原因となるバグが発見されCVE-2015-0235(GHOST)と命名されたようです。放置した場合は相当多くのアプリケーションがこの脆弱性の影響を受けることが予想されます。 glibcは libcのGNUバージョンです。libcはアプリケーションではなく、事実上全てのアプリケーションが利用しているライブラリです。OSの中ではカーネルに次いで重要な部分と言えます。Linuxシステムでは(ことサーバー用途においては)例外なく glibcが使われています。 この glibcに含まれる gethostbyname系関数の実装に 2000年頃から存在したバグが今になって発見され、CVE-2015-0235 通称 GHOSTと命名されました。ネットワークで何らかの通信を行うアプリケーションは必ず※この関数を使用します。 ※追記: 名前解決をサポート

    glibcのgethostbyname関数に存在するCVE-2015-0235(GHOST)脆弱性について - ブログ - ワルブリックス株式会社
  • 知らぬはエンジニアの恥。今さら聞けない【コンテナ/仮想化技術】11選 - paiza times

    Photo by Sam MacCutchan どうも後藤です! もう10年以上になるでしょうか・・・ とにかくなんでもかんでも仮想化すればよいというこの風潮。paizaでも仮想化技術は大活躍中。インフラは仮想化技術の上に構築されているし、もちろんコードの評価環境だってばりばりの仮想環境上です。仮想環境ばっちこーい! いったいいつからこんな流れになったんでしょう?どこに基準を求めるかでだいぶかわりますけれども、執筆現在から考えると、こうした流れには35年くらいの歴史があります。使われる仮想化技術は時代とともにかわってきました。だいたいどの時代にも流行ってものがありました。 最近(2014年ごろ)の流行とえば、インフラの一番下にハイパーバイザを入れて、その上でDockerを動かして、管理にはChefやPuppetを使うといったものです。数年経てば状況は変わるでしょうけれども、とにかく楽をした

    知らぬはエンジニアの恥。今さら聞けない【コンテナ/仮想化技術】11選 - paiza times
  • よくわかるLinux帯域制限 | GREE Engineering

    矢口です。 みなさんはLinuxのtcという機能をご存知でしょうか。送信するパケットの帯域制御を行うことができる大変強力な機能で、グリーでもいくつかの用途で使用されています。 具体的な事例の一つはRedisです。Redisではreplicationを新規に開始する際やfailoverが発生しmasterが切り替わった際(特に2.6系)にストアされている全データが転送されます。しかし帯域制限をかける機能がないため、ネットワーク帯域を圧迫してしまう危険性があります。また通常のクライアントとの通信でも大量のクエリにより予想以上の帯域を使用してしまう可能性があります。このような場合にtcを用いることでRedisの使用する帯域をコントロールできます。 このように有用なtcですが残念なことに日語/英語ともにわかりやすい解説や詳細な情報は多くありません。 私も社内において使われていたtcの設定に問題が

    よくわかるLinux帯域制限 | GREE Engineering
  • renameシステムコールとmvコマンド - Linuxの備忘録とか・・・(目次へ)

    システムコールにrenameというのがあり、それにもとづくrenameコマンドがありますが、通常ファイル名を変更する場合、mvコマンドを使つかいます。renameコマンドが直感的なコマンド体系でないからだと思います。 [root@localhost a1]# man rename 書式 rename from to file renameは指定したファイル名においてfromに最初にマッチする部分をtoで置き換える。 たとえばaaaのファイルをbbbに置き換える場合、以下のように使うことになります。 [root@localhost a1]# ls aaa [root@localhost a1]# rename aaa bbb aaa [root@localhost a1]# ls bbb mvコマンドだと [root@localhost a1]# ls bbb [root@localhost

  • どうしてメモリはスワップするのか!?

    こんにちは。斎藤です。 最近、新しいスキー板が欲しいなと思っています。現在使っているOGASAKAの板は5年目に入り、メーカーからこれ以上はチューンナップ(メンテナンス)はできないよ、と言われてしまいました。もし、次に買うなら、スノーボーダーの人と一緒にパウダーに飛び込みやすいセミファットタイプが良いのかなと考えています。皆さんのオススメ、ぜひ教えてください。 さて、今日はLinux Kernel上でのメモリ管理、特にページ回収(Page Reclaim)とスワップに絞り、「スワップの理由」「ページを回収する仕組み」そして「スワップの様子を観察する」の3点に分けてお話しします。「スワップするのが気持ち悪い」と考えている方は少なくないと思いますし、私もそう考えていた時期がありました。しかし、それは当に悪い事なのか、今回掘り下げて行きます。 ※主な対象Kernelは2.6.32(Red Ha

    どうしてメモリはスワップするのか!?
  • echo $'\n' で改行が表示できる - reroの日記

    ぐおお,知らんかった…. echo の引数に '\n' を与えると,普通 '\n' という文字列と認識される.エスケープ (\) を認識して欲しいときは -e オプションを付ける.-e オプションを付けると,以降ずっと \ が有効になるので,\ を表示したいときは \\ とする. $ echo $ echo '\n' \n $ echo -e '\n' $ echo -e '\n''\\n' \n $一方,$'\n' という表記ではエスケープを一時的に有効にできる.つまり,エスケープが有効な範囲と無効な範囲を混在できる. $ echo $'\n' $ echo $'\n\n' $ echo $'\n''\n' \n $

    echo $'\n' で改行が表示できる - reroの日記