成長は小さな失敗の積み重ね 事業を支えるCARTAのフルサイクルエンジニアリング / growth-for-small-fail-fast-carta-fullcycle
今回は、Webサーバの実装に依存することなく、OSレイヤでWebサーバソフトウェアが起動時に実行するであろうシステムコールを監視して、そのタイミングでプロセスをイメージ化する方法(PoC)について紹介します。 その前に、まずは前提の一致ということで、僕は以前から、Webサーバプロセスの性質について、プロアクティブ性とリアクティブ性という分類について述べてきました。 プロアクティブ性とリアクティブ性について簡単にまとめると、以下のようになります。 Webサーバ機能のプロアクティブ性とリアクティブ性 突発的なアクセス集中のような変化に耐えうるシステムを構築するためには,負荷の状態に基いて適切なインスタンスの数を決定し,必要以上にコンピュータリソースを使用しないように設計することも重要である. 単一のサーバに高集積にホストが収容可能であり,ホスト単位でのリソース管理を適切に行いながら,セキュリテ
Mackerelチームのエンジニアのid:itchynyです。 「mackerel-agentを入れるとloadavgが7時間ごとに上昇する」 先日、このような問い合わせを複数のお客さまから受けました。私も実験してみたところ、確かに再現しました。EC2 t2.microにmackerel-agentを入れて簡単なログ監視とプロセス監視を設定し、数日放置しました。 確かに、約7時間ごとにloadavgが上昇しています。この周期のcronの設定はしておらず、またmackerel-agent内部でも7時間ごとに行う処理はありません。しかし、プラグインを多く入れるほどloadavgのピーク値も上がります。 本エントリーでは、この現象の原因について説明します。 loadavgが上昇する原因を調べるには、まずloadavg自体がどう計算されているかを知る必要があります。 まずは、Linuxがloada
我が家のパソコンはLinuxデスクトップだ。 俺のパソコンはArchLinux、嫁のパソコンにはopenSUSE、娘のパソコンにはUbuntuがインストールされている。 今まで娘に質問されなかったのでWindows OSの詳細を話したことがなかった。 娘にとって学校でよく使うWindowsはLinuxディストーションのうちの1つくらいの認識でしかなく、カスタマイズしたらWindowsになると思っていた。 娘はデスクトップ環境を知っている。 GnomeとKDEとXfceくらいしか知らないけど、デスクトップ環境を切り替えると操作性が大きく変わることを知っていた。 だからExplorerを知っているのかは定かでないが、Explorerに切り替えれば学校のパソコンと同じになると思っていた。 しかし遂にその時が来てしまった。 娘が言うのだ「お父さんCLIP STUDIO PAINT買ってよ」と。 「
続いて、標準入力からデータを受け取る場合のparallelコマンドの主な使い方は次のとおり。 標準入力からデータを受け取る場合の基本的な使い方 コマンド | parallel -I% --max-args 1 コマンド % parallelコマンドの動作確認例 その1 $ seq 1 10 | parallel -I% --max-args 1 echo anycmd % % 2> /dev/null anycmd 1 1 anycmd 2 2 anycmd 3 3 anycmd 4 4 anycmd 5 5 anycmd 6 6 anycmd 7 7 anycmd 8 8 anycmd 9 9 anycmd 10 10 $ -I%が標準入力から渡ってくるデータに置換される仕組みになっている。 parallelコマンドの動作確認例 その2 $ seq 1 10 | parallel -I%
Red Hat Enterprise Linux 7.5 がリリースされ、そのリリースノートで "Python 2 has been deprecated" とアナウンスされました。 Chapter 54. Deprecated Functionality - Red Hat Customer Portal Python 2 has been deprecated Python 2 will be replaced with Python 3 in the next Red Hat Enterprise Linux (RHEL) major release. 次のメジャーバージョンでは Python 2 が Python 3 に置き換えられるから、 RHEL 7.5 から Python 2.7 が deprecated 扱いになるということです。 Ubuntu 18.04 LTS では m
概要 netstatやssコマンドにより、あるホストと他のホストとのコネクションを一覧表示できる。しかし、Webシステムの場合、クライアントが並行接続するため、 同一ホストから複数のポートを介してコネクションを確立しているケースが多い。コネクション数が大きい場合は、1万以上のコネクションが表示され、ホスト間のコネクション状況を人間の目で概観することが難しかった。 そこで、同一ホストとのコネクションを集約表示し、コネクション状況を概観する 「lstf」 (「えるえすてぃーえふ」)コマンドをつくった。 github.com lstfの特徴は以下の通り。 コマンド実行ホストを起点に、active openコネクションかpassive openコネクションを判定する。つまり、接続をする側かされる側かを判定する。 各ホストフローごとにコネクション数を表示する Goで実装されているポータビリティ。i3
Linuxのカーネルは膨大な数のソースコードから成り立っており、どこに何の処理が書いてあるのかぱっと見当をつけるのにはかなりコードを読み込む必要があります。「Interactive map of Linux kernel」はそのソースコードを機能とレイヤーで分類して表示してくれるサイトということで、使い勝手を試してみました。 Interactive map of Linux kernel http://www.makelinux.net/kernel_map/ サイトにアクセスし、ロードが終わると下の画像のように6列6行の表が表示されます。列が機能の分類を表しており、「インターフェース」「システム」「処理」「メモリー」「ストレージ」「ネットワーク」という分類になっています。行はレイヤーを表しており、上からシステムコールなどの「ユーザースペースインターフェース」、「バーチャル」、「ブリッジ」
3/21 22時頃: 質問編へのリンクを撤去し、タイトルを変更しました。(元のタイトルは「【謎】本当にあったfindコマンドの怖い話【解決編】」) 昨日のエントリについて、実験にしてはケースが雑だったので再検証していきます。 【謎】本当にあったfindコマンドの怖い話【おもしろ現象】 - くんすとの備忘録 ちなみにモチベーションは「問題を回避したい」ではなく「この現象の原因を知りたい」です1。 よろしくお願いします。 現象からしてfindコマンドが処理中に書き換えられたファイルを読み込んでいるのは明白です。 少しずつ仮設を立て見ていきましょう。 まぁまぁお付き合いください。 検証ケース ケース1: 10万ファイルで実行 ケース2: パイプを使わずfindコマンド一発にし、100万ファイルで実行 ケース3: ケース2を10万ファイルで実行 ケース4: ケース2を15万ファイルで実行 ケース1
7. macOSやWindowsでLinuxバイナリを動かすプログラムを作った話 (ぬるぽへ) で聞いた Noah をインストールして使ってみた。 Noahとは ハイパーバイザ技術を用いたクロスOSなLinuxバイナリ互換プラットフォームの構築 佐伯 学哉・西脇 友一 ー Noah : Hypervisor-Based Darwin Subsystem for Linux ー Noah NoahはmacOS上でLinuxアプリケーションをそのまま動作させるアプリケーションです。ハイパーバイザを用いた新しい手法で、従来のバイナリ互換技術よりも安全かつ高速なLinuxエミュレーションを実現。Noahを使えば、apt-getやLinux向けgcc、それにあなたがこれから作る新しいLinuxアプリケーションが、そのままmacOSで動作します。 もう移植を待つ必要も、する必要もありません。 Noah
2. 自己紹介 - @mhiramat - Linaro Ltdというところで働いています - Linuxカーネルのトレーサ部分のメンテナなど - 普段はarm系を気に掛けている 2 3. 落ち着こう 現状、Spectre (Variant 1/2) は動作が解析され、緩和策が進んでいる。 - 根本対策はないが、緩和策はある - いくつかはコンパイラの修正を伴うので、ユーザバイナリを含めて必要なものは総入 れ替えになる覚悟が必要 - 修正は安定版カーネルに順次取り込まれているので4.4, 4.9, 4.14はなんとかなりそ う。(とは言え、大きな修正で今も不具合報告が上がっている) - ディストロカーネルも出来るだけ最新版を採用しよう。 - これはlivepatchでは修正できない。再起動は必須。 - 出来る限り最新版のGCCとLinuxに入れ替えよう。(まだ開発は続いている) - 一部問
「カーネルのコードがよくわからない。Linuxカーネルに関する本を読んでもいまいちしっくりこない。」 から、「読めば理解できそう..!」 になるまでにやったことのまとめ。 はじめに 低レイヤの話がわかるようになりたかった。 カーネルの中身が知りたかった。 とりあえず本を読もうと思い詳解 Linuxカーネル 第3版を読んだが知識がなさ過ぎてよくわからない。 知らない用語だらけで都度調べればなんとなくはわかる気もするが、いまいち頭に入ってこない。 今思うとそもそもCPUの話なのかカーネルの話なのかさえよくわからない状態で読んでいたような気がする。 そんな状態を克服するためにやったことをまとめておく。 学習前 学習前の自分の知識はこんな感じだった。 知っていた データ構造とアルゴリズム 論理回路 C言語(研究室で数値計算に使える程度。構造体やポインタくらいならわかる。) よく知らなかった OSが
はじめに Linuxの安定カーネルのとりまとめ役、グレッグ・クラーハートマンによるメルトダウンとスペクター問題に関する1/6時点での現況の説明の訳文です。 太字は訳者が主観で独自に付加したものです。 2018/1/19: 対応状況がGreg氏によりアップデートされましたので、追記しました。 ライセンス 原文は当人のブログでby-nc-sa3.0で公開されています。 この文章のライセンスも原文に準じます。 謝辞 何よりもまず多忙な中情報をシェアしてくれた原著者のGreg氏に。 表記間違いについて指摘ありがとうございます。以下修正しました。 https://twitter.com/KuniSuzaki/status/950888858568163328 ライセンスの表記間違いを修正しました。ご指摘ありがとうございました。 @7of9 さんより明らかな誤認・誤訳・見落とし箇所への編集リクエストを
Disclaimer 私はネットワークの勉強もちゃんとしたことないし、Linux のソース読むのもはじめてな素人です。 何かおかしなところなどあれば、遠慮なくコメント欄でまさかりをお願いいたします。 ソースコードの引用に関して 本文中で Linux のコード/ドキュメントを引用している箇所がありますが、すべてタグ v4.11 のものです。また、日本語のコメント・翻訳文は筆者が入れたものです。 TL; DR Linux のカーネルパラメータ net.ipv4.tcp_tw_recycle は、バージョン4.12から廃止されました。 今後はこの設定は行わないようにしましょう(というかできません)。 一方、net.ipv4.tcp_tw_reuse は安全であり、引き続き利用できます。 …というだけの話なのですが、自分用にメモがてら経緯・背景などを記録しておきます。 なんで気がついたか このパラ
κeenです。雰囲気でシェルを使ってる人が多いとのことだったので少しばかり込み入った知識を。 あと一応POSIX準拠かどうかも気にしながらやっていきます。 基礎知識編 シェルの種類 まず、POSIXにシェルが定義されています。 これに最低限の機能で準拠しているものをPOSIXシェルと呼ぶことにします。いわゆる/bin/shです。具体的な実装はbsh、ash、dashあたりでしょうか。 最低限の機能以上に色々拡張されているシェルを拡張POSIXシェルと呼ぶことにします。具体的な実装はbash、zsh、kshなどでしょうか。 ここでは触れませんがPOSIX準拠でないシェルも存在してcshやtcshなどのシェルがあります。あと確か最近話題のfishも違ったような。 さて、1つ問題になるのは普段使いのコマンドラインはおおむね拡張POSIXシェルでしょうが、サーバで使うシェルやデプロイスクリプトで呼
システムを運用していく上で cron を使う場面はよくありますよね 処理をスケジュール実行したい時にとても便利です そんな cron ですが、最近仕事で作業しているときに ntpdate でシステム時刻を変更した後に cron で設定した時刻になってもジョブが実行されないという問題が見つかりました 全てのジョブが実行されていないわけではなく一部のジョブは実行されているようでした また、時刻を変更した後に crond を再起動すれば全てのジョブが正常に実行されるようになりました 幸い、実運用ではなくてシステムテスト中に見つかった問題なのでまだよかったんですが、運用している環境で同じ問題が起きたら相当マズイですよね そもそも ntp の時刻同期でシステム時刻が修正された場合にも同じ問題が起きそうじゃないですか? ググっても同じような事象は見つからず、社内のメンバーにも聞いてみても cron で
気分転換に、普段からLinuxで作業する上で割と便利なツールだったり小技を共有します。知ってたらごめんね 一応全部MacでもLinuxでも動くはずです。 高速化系 axel , aria2c http://qiita.com/sarumonera/items/2b30999d7d41a4747d74 https://goo.gl/gsFrCT https://wiki.archlinuxjp.org/index.php/Aria2 http://qiita.com/TokyoMickey/items/cb51805a19dcee416151 こいつらは割と有名(?)かなと思います。やってることはcurlやwgetとほとんど変わらず、サーバにHTTPリクエストを送ってレスポンスを取ってくるだけなのですが、ダウンロードを高速化するためにtcpコネクションを何本も貼って、相手サーバーに負担をかけ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く