並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 333件

新着順 人気順

OOMの検索結果1 - 40 件 / 333件

  • はてなブログのキャッシュ周りをきちんと改善したら、アプリケーションサーバの台数を半分にできた話 - Hatena Developer Blog

    はてなブログでSREをやっているid:cohalzです。 2019年12月頃からid:utgwkkやid:onkとともに、はてなブログにおけるキャッシュ周りの改善を行いました。その結果、次のような成果が得られました。 ブログ記事のキャッシュヒット率が、1日平均で8%から58%に向上 アプリケーションサーバの台数を、以前の半数以下に削減 DBに届くリクエスト数が、以前の3分の2まで減少 レスポンスタイムの平均が、以前の8割まで減少 この記事では、実際にどういった改善を行ったのか、その際に気をつけたことや大変だったことを紹介します。 はてなブログがVarnishを導入した経緯と課題 開発合宿をきっかけに問題が明らかになる 進め方をまず考える ホストのメモリをできるだけたくさん利用する メモリを積んだホストでなぜかレイテンシが悪化 キャッシュが分散しないようVaryヘッダを使う デバイス情報を適

      はてなブログのキャッシュ周りをきちんと改善したら、アプリケーションサーバの台数を半分にできた話 - Hatena Developer Blog
    • データ変更を伴うバッチ処理を書く時に考慮していること - shallowな暮らし

      こんにちは、id:shallow1729です。最近はインフラ寄りなお仕事をよくやっていますがこれまでにいくつかデータ移行やデータ基盤構築などのバッチ処理のお仕事をしてきました。以前にも一度そういった経験を元に記事を書いたのですが、MySQLやシステムに関する知識が以前よりも増えた今もう一度書き直したいなと思いました。 なので今回はバッチ処理を書く時のテクニック2022版という感じです。今の仕事の関係でMySQLやrailsを前提にしている話が多いですが、おそらく他のデータベースを使っている人にも役に立つ話が多いのではないかと思います。ただ、今回の記事は経験に基づくものが多く、あまりよくないアイデアもあるかもしれません。改善点や間違いなどあればご指摘ください。 冪等性を持つように 冪等性とは端的に言えばある操作を複数回実行しても一回しか実行しなかった時と同じ結果になる性質の事です。長時間かか

        データ変更を伴うバッチ処理を書く時に考慮していること - shallowな暮らし
      • 大規模システムでの Linux のメモリ管理

        (This post is also available in English.) この記事は Linux memory management at scale を 著者の Chris Down さんの許可 を得て Hiroaki Nakamura が日本語に翻訳したものです。 原文のライセンス は CC BY-SA 4.0 であり、翻訳のライセンスも同じく CC BY 4.0 とします。 cgroup2 プロジェクトでの私の仕事の一部として Linux システムのリソース管理についてエンジニアと話すことに多くの時間をかけてきました。 これらの会話を通じてどんどん明らかになってきた 1 つの事実は多くのエンジニアは、シニア SRE たちでさえも、 Linux のメモリ管理についていくつかのよくある誤解を持っていて、そしてそれが彼らがサポートするサービスやシステムが本来確実に稼働したり効率的

          大規模システムでの Linux のメモリ管理
        • Goで解放したメモリが少しずつ戻ってくる現象 - knqyf263's blog

          情報を発信する人のところに情報が集まることを日々実感しているので、Linuxのメモリ管理に特に詳しいわけではないのですが最近遭遇した問題について自分の理解を書いておきます。ざっと調べても同じことを書いている人を見つけられなかったので、公開には意義があると考えています。識者の方がフィードバックをくださると嬉しいです。 ※ AIの出力をベースに書いているのでいつもと少し文体が違います。 背景 要約 調査 再現の難しさ Goアプリケーションの調査 pprofによる分析 GCログの調査 Linuxの調査 Goランタイムの調査 GoのGCとTHP khugepagedの問題 Goランタイムにおける回避策 回避策の削除 max_ptes_noneのデフォルト値について MADV_NOHUGEPAGEをやめた理由 調査内容まとめ 解決策 検証 C言語 Go言語 まとめ 背景 Go言語で書かれたOSSのア

            Goで解放したメモリが少しずつ戻ってくる現象 - knqyf263's blog
          • スワップの弁護:よくある誤解を解く

            (This post is also available in English.) この記事は In defence of swap: common misconceptions を 著者の Chris Down さんの許可 を得て Hiroaki Nakamura が日本語に翻訳したものです。 原文のライセンス は CC BY-SA 4.0 であり、翻訳のライセンスも同じく CC BY 4.0 とします。 長文を読みたくない方への要約: スワップを持つことは正しく機能するシステムのかなり重要なポイントです。 スワップが無ければ、まともなメモリ管理を実現することは難しくなります。 スワップは一般的に緊急事態用のメモリを取得するためのものではなく、メモリの回収を平等に効率的に行うためのものです。 実のところ「緊急事態用のメモリ」は一般的に盛大に悪影響を及ぼします。 スワップを無効にすることは

              スワップの弁護:よくある誤解を解く
            • BPF Performance Toolsを読んだ感想 - go_vargoのブログ

              BPF Performance Toolsを読んだので、感想ブログです。 先に感想を言っておくと「最高」でした。 BPF Performance Toolsとは? NetflixでKernel・パフォーマンスにかかわるチューニング・アーキテクチャを専門にしているBrendan Greggさんが書いた本です。BPFのiovisorというTracing分野の第一人者でもあります。 www.brendangregg.com 2019年12月に発売したばかりなので、BPFの分野では最新の本でしょう。他の著書に有名な本として(日本語版の)「詳解システム・パフォーマンス」があります。 BPF Performance Toolsは「詳解システム・パフォーマンス」第二弾と言えるかもしれません。ちなみにページ数は880Pあり、Kindleで表示される読み終わるための平均的な時間は「27時間30分」で、大作R

                BPF Performance Toolsを読んだ感想 - go_vargoのブログ
              • Amazon SQS を使ったアプリケーションを本番で運用する際に考慮すべき基本的な 5 つのこと

                Amazon SQS は可用性やスケーラビリティの高いメッセジキューサービスであり、AWS の代表的なサービスの 1 つと言えるでしょう。ところが、本番の運用に耐えられるアプリケーションにしようと思うと考えることが意外に多いものです。本エントリーでは簡単なサンプルアプリケーションをベースに、本番で運用するために考慮すべき点・注意点について見ていきます。題材として扱うのが SQS なだけで、SQS 以外を使ったアプリケーションにも応用できる内容もあるでしょう。 なお、SQS には Standard queue と FIFO queue がありますが、Standard queue を使う前提とします。 アジェンダは次のとおりです。 サンプルアプリケーション 1. ログ 2. At-least-once delivery と visibility timeout 3. デプロイ 4. 異常系 5

                  Amazon SQS を使ったアプリケーションを本番で運用する際に考慮すべき基本的な 5 つのこと
                • グーグルが普及する前、みんな何使ってた?

                  グーグルが普及する前、みんな何使ってた?2020.08.01 11:0026,977 Daniel Kolitz - Gizmodo US [原文] ( Rina Fukazu ) 今でこそ、たいていのことは「ググればわかる」時代だけど...。 1997年、最近お気に入りの映画『オースティン・パワーズ』のことを友達にアツ〜く語るあなた。すると友達は「ランディ・クエイドが最高だった」と一言。あなたの頭のなかでは「あれ? 」と戸惑いつつ、話を聞いていたら友達がクリント・ハワードのことを言っていることに気づく。友達にそう伝えてみるも、お互い納得しあえず...。一日モヤモヤしつつ、家に帰ってパソコンを立ち上げてから40分ほど経過...「やっぱり、ランディ・クエイドは出演してないよ!」 2020年、Google(グーグル)が広く使われる前の時代、人々はどのようにして日常の疑問を解決したり、情報収集し

                    グーグルが普及する前、みんな何使ってた?
                  • 監視の考え方 〜あるいは可観測性とはなんなのか〜 - estie inside blog

                    みなさん、監視作ってますか? システムを作ったら、そのシステムを監視していく必要がありますよね。どうやったら「いい監視」が作れるのでしょうか。「いい監視」とそうでない監視との違いとは、いったいなんでしょうか。 今の時代、「監視」ではなくて「可観測性」、 Observability (o11y) の時代になっていて、良いプラクティスや考え方が色々とあります。 この記事は、監視や o11y についての考え方を社内に共有するため書いたものを、社外共有用に調整し直したものです。新しい Observability の時代を、一緒に生きていきましょう。 監視を作ろう あなたはシステムを作りました。そのシステムに「監視」をつけようと思ったとき、最初にすることはなんでしょうか? まずは、システムを何らかのツールで監視するところから始めましょう。やらなきゃはじまらない。 Nagios, Cacti, Mun

                      監視の考え方 〜あるいは可観測性とはなんなのか〜 - estie inside blog
                    • リアクティブは難しいが役に立つ - kubell Creator's Note

                      お久しぶりです、かとじゅん(@j5ik2o)です。テックブログを書くのは何年ぶりか…。 サービスが停止したり応答性が低下すると、お叱りや逆に励ましをいただきますが、エンジニアとして設計レベルからそういった問題に対処するにはどうするか、日々精進しているところですmm。この記事はそういう論点で注目されている「リアクティブ原則」についてまとめてみたいと思います。 それなりのボリュームになってしまったので、時間があるときに読んでいただければと思います。 さて、Linux Foundation内の新たなトップレベルプロジェクトであるReactive Foundationが主催する、Reactive Summit 2020が11月10日にオンラインで開催されたので参加しました。 www.reactivesummit.org 参加されていたスピーカーはLightbendをはじめ、Netflix, Fac

                        リアクティブは難しいが役に立つ - kubell Creator's Note
                      • 僕が障害復旧対応時に考えていることを言語化してみる - Qiita

                        これまで数多くのシステム障害を復旧してきました。 障害は無いに越したことは無いですし、起こらないように最善を尽くすのが我々エンジニアの使命です。 しかし、どれだけ最善を尽くしても起こる時には起こります。 今回は、これまで数多くの障害を復旧させてきたエンジニアが、復旧作業時に何を考えているのかを改めて言語化してみたいと思います。 こういう情報ってそれぞれのエンジニアの頭の中にあってあまり共有されないので、意外に参考になるかなと思います。 障害復旧対応の醍醐味 表現が適切かは分かりませんが、僕はシステム障害を復旧させるのが大好きです。目の前に起こっている事象からヒントを集め、地道に原因を切り分けてクリティカルヒットを見つけたときは名探偵になった爽快感があります。 加えて、動いているものを常に動かし続ける日頃の保守運用とは異なり、動いてないマイナスの状況を0まで戻すということで、復旧成功した際に

                          僕が障害復旧対応時に考えていることを言語化してみる - Qiita
                        • golangとDockerとOOM — KaoriYa

                          golangで書いたプログラムをDockerで動かしOOMが発生した際になるべく情報を残して殺される方法を紹介します。 2020/08/16追記: この記事の内容はgolangに関してはやや現実的ではなくなってしまいました。 詳しくは続編を参照してください。 TL;DR golang製のプログラムは仮想メモリ(VSZ)の確保に失敗するとgoroutineのダンプを吐いて死ぬ DockerのOOMはRSSベースで検出時にSIGKILLを投げてくる Docker利用時にVSZで制限をかけるスクリプトを書いた golang製のプログラムはlinux-amd64において最低でも101MBのVSZを要求する VSZの制限がそれより小さいと当然起動できない 実際のRSSは3MB程度で起動する Background コンテナ内で動いているプロダクション上のgolang製のプログラムが時々OOMに殺されて

                          • eBPFに3日で入門した話 - CADDi Tech Blog

                            はじめに eBPF とはなにか ざっくり概要 「Packet Filter」なのに「Virtual Machine」? eBPFでなにができるか? カーネルイベントのフック ユーザーランドアプリケーションとのやりとり eBPFの主な用途 eBPFが注目される背景 eBPFの仕組み アーキテクチャと処理フロー カーネルモジュールとeBPFの違い eBPFプログラムの作り方 eBPFプログラムを作ってみる 環境の準備 Hello world もう少し複雑なサンプル その他のサンプル HTTPリクエストのダンプ TCP接続先の調査 tcplife dirtop filetop oomkill まとめ eBPFはなにに使えるか 参考サイト はじめに こんにちは、Platformチームの小森です。 eBPF (extended Berkley Packet Filter) について、2022年8月2

                              eBPFに3日で入門した話 - CADDi Tech Blog
                            • 新人プログラマ アンチパターン:原理原則多すぎて脳みそOOMエラー - Qiita

                              この記事で伝えたいこと(忙しい人向け) 新人ほど「保守していく」ことの感覚が腹落ちしにくいのではないか説 我々は保守しやすいコードを書くべきであり、保守しやすいコードを達成するための手段として原理原則やデザインパターンが存在している 保守ってなんで必要なんだっけ?という体系的な理解を持ったうえで、具体的なテクニックを学んでいくことが大事 // 追記(2023/12/9) なんとミノ駆動 さんにコメントいただけました。 もちろん良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方は読んで影響を受けてます。 とってもうれしい。 想定読者 新卒 ~ 2年目くらいまでのプログラミング初心者 Webアプリの保守開発をしているエンジニア 3ヶ月前くらいの自分(未経験からエンジニアになって1年くらい) こんなことないでしょうか 先輩などから原理原則の観点を共有してもらったり、

                                新人プログラマ アンチパターン:原理原則多すぎて脳みそOOMエラー - Qiita
                              • Why Is SQLite Coded In C

                                Note: Sections 2.0 and 3.0 of this article were added in response to comments on Hacker News and Reddit. Since its inception on 2000-05-29, SQLite has been implemented in generic C. C was and continues to be the best language for implementing a software library like SQLite. There are no plans to recode SQLite in any other programming language at this time. The reasons why C is the best language to

                                • スタディサプリ最大のRailsアプリケーションにYJIT+pitchforkを導入してメモリ使用量を劇的に削減するまで - スタディサプリ Product Team Blog

                                  こんにちは。SREのkyontanです。Rubyが大好きなのでRubyの話をします。ちなみにリクルートはRubyKaigi 2024へGold Sponsorとして協賛しています! *1。ぜひ沖縄でお会いしましょう。 これはあるアプリケーションのメモリ消費量を示すグラフなのですが、まさかgemを入れ替えるだけでこんなに嬉しい変化が見られるとは思っていませんでした。今日はそんなgemの話をします。 話は遡って2023年4月のある日、インターネットを眺めていたところ、ShopifyがpitchforkというOSSを公開したという情報が目に留まりました。 調べてみると、どうやら著名なRackサーバー実装の1つであるunicornの派生版であり、メモリ使用量の削減に特化しているらしいのです。 github.com これはスタディサプリ小中高のあのリソースドカ食いマイクロサービス第一位である api

                                    スタディサプリ最大のRailsアプリケーションにYJIT+pitchforkを導入してメモリ使用量を劇的に削減するまで - スタディサプリ Product Team Blog
                                  • GoはいつGCするのか?

                                    TL;DR Go(のランタイム)は以下のタイミングで自動的にGCを実行する 前回のGC後に占有していたメモリと同量を新たに確保したとき 前回のGCから2分後 cgroupなどでメモリ制限しているときは、メモリ使用量が制限の50%以上になったらruntime.GC()を呼び手動でGCすべきである 前置き: GoとOOMのこれまで 以下はGo 1.16での調査結果です。Goのバージョンが異なった場合は事情が異なる可能性があります。 Goでプログラムを書く際に、使用メモリ量を気にしなければならないシーンはGCのおかげでそう多くはありません。実際それは間違いではないのですが、運用まで視野に入れるとそうは言ってられないことがあるのもまた現実です。昨今はコンテナの利用が当たり前になったことに伴い、OOMによりプロセスが強制的に終了させられることもあり、それを避けるために一定量以下のメモリで動くことが重

                                      GoはいつGCするのか?
                                    • Why, after 6 years, I’m over GraphQL

                                      GraphQL is an incredible piece of technology that has captured a lot of mindshare since I first started slinging it in production in 2018. You won’t have to look far back on this (rather inactive) blog to see I have previously championed this technology. After building many a React SPA on top of a hodge podge of untyped JSON REST APIs, I found GraphQL a breath of fresh air. I was truly a GraphQL h

                                      • 「MySQLのフェイルオーバーテストをする」と聞いてぼんやり思ったこと

                                        TL;DR 負荷をかけながらフェイルオーバーテストをするなら、負荷クライアント側で「どの書き込みが成功したのか」のログは必ず取っておく でないと、フェイルオーバー起因でデータロストが発生するのかしないのかのチェックができない フェイルオーバーシナリオ スイッチオーバー(手動での切り替え)を含めてざっと思いつくのはこれくらい。 スイッチオーバー mysqldの正常終了 mysqldの異常終了、特に、mysqld_safeやsystemdがmysqldを再起動させてしまう環境 mysqldのハングアップ カーネルパニック ファイルシステムのハングアップ 電プチ スイッチオーバー たぶんHAソリューションを作る時にちゃんとテストするからこれはそんなに問題にならない気がするけれど、(レプリケーションベースのソリューションの場合)「レプリケーション遅延が起こってる時のスイッチオーバー」で何が起こるか

                                        • パソコン「生徒1人1台」に 西村経済再生担当相 : 痛いニュース(ノ∀`)

                                          パソコン「生徒1人1台」に 西村経済再生担当相 1 名前:みつを ★:2019/11/19(火) 19:42:16.46 ID:GahjP5yS9 経済対策 パソコン「1人1台」に 生徒1人がパソコン1台を使えるようにするための教育環境の整備が、近くとりまとめられる経済対策に盛り込まれる方向。 先週の経済財政諮問会議で、安倍首相は、「パソコンが1人あたり1台となることが当然だということを、国家意思として明確に示すことが重要」だと発言している。 西村経済再生担当相は、閣議後の会見で「単に配るだけでは活用が進まないので、教える人材をどう確保するのか、ソフト面も含めて議論を進めている」と述べた。 https://www.fnn.jp/posts/00427537CX/201911191931_CX_CX 4: 名無しさん@1周年 2019/11/19(火) 19:43:29.65 ID:wZ0I

                                            パソコン「生徒1人1台」に 西村経済再生担当相 : 痛いニュース(ノ∀`)
                                          • YJITの性能を最大限引き出す方法 - k0kubun's blog

                                            RubyのJITコンパイラYJITを開発している弊社Shopifyでは、社内で最もトラフィックが多いストアフロントのアプリにRuby 3.3 (master) をデプロイして平均レスポンスタイムが16%高速化、社内で最も大きなアプリであるモノリスにRuby 3.2をデプロイして平均レスポンスタイムが9%高速化している。他の会社でも、YJITを本番で有効にしたら高速化したという事例をちらほら目にした。 一方で必ずしも良い報告ばかりではなく、YJITを有効化したらメモリを使い切ってしまったりだとか、遅くなったみたいな報告も目に入ることがある。こういった問題は我々も多かれ少なかれ経験しており、それぞれ適切に対処することで解決できたため、その知見を共有する。*1 メモリを使い切ってしまった時 zenn.dev YJITを有効化すると、YJITが生成する機械語に加えて、それに関するメタデータもメモリ

                                              YJITの性能を最大限引き出す方法 - k0kubun's blog
                                            • GitHub Actions のコスト戦略 - GeekFactory

                                              TLDR 開発体験が良くなると CI のコストも減る 不必要なジョブ実行を減らし、割れ窓を直すことから始めると良い Self-hosted runners ではクラウドコスト最適化の一般的なプラクティスも併用する GitHub Actions のコスト構造 GitHub-hosted runners GitHub が提供するインフラを利用する。一般的なクラウドより高めの料金設定になっている 1分単位で課金される。ジョブの実行時間が数秒間でも1分間で課金されるので注意 Public repository は無料、Private repository は従量課金になっている Organization 内で利用料金が合算されて翌月請求される。Organization Owner なら請求レポート (CSV) をダウンロードできる Self-hosted runners GitHub では課金され

                                                GitHub Actions のコスト戦略 - GeekFactory
                                              • なぜPrometheusを辞めてDatadogを採用したのか - ABEJA Tech Blog

                                                こんにちは。ABEJAのインフラ管理してる村主 @rwle1221 です。 本ブログは Datadog Advent Calendar 2019 の8日目です。 今日は ABEJA Platform というプロダクトで、なぜ Prometheus から Datadog に変えたのか。というお話したいと思います。 一人の方でも採用基準の参考になればと思います。 第一フェーズ:実は元々Datadogを使っていた 実は Prometheus の前は Datadog を使っていました。 なぜ Datadog を使っていたかというと、Za○bix や Na○ios などは古い思想なので使う気になれなかったという単純な理由です。 ただ、 Datadog は $18/host という値段で 当初は数十台だったので数万円ほど発生していました。やはり少し高いなという印象です。 第二フェーズ:Promethe

                                                  なぜPrometheusを辞めてDatadogを採用したのか - ABEJA Tech Blog
                                                • ジャイアントパンダに注意 - Next.js のビルド改善 (株式会社GiXo様)

                                                  最近になって Frontend Ops の傭兵として活動を始めました。 Frontend Ops 実践のモデルケースとして、 株式会社GiXo様で Next.js 仕事に取り組ませいただきました。今回、その内容を公開する許可を頂けたので、事例として公開させていただきます。 依頼主 株式会社GiXo様 以下、敬称略 相談内容 フロントエンド関連のリポジトリで、Next.js のビルドが遅くなってしまった。 重いことに起因して Vercel CI で OOM で確率的に落ちるようになった。CIが信用できなくなり、とりあえず再ビルドするクセがついてしまって、生産性が落ちている。 モノレポ内にとくに重いアプリケーションが一つあり、これを調査・解決してほしい。 仮ゴール: VercelCI 上のビルド時間を半分OOM が発生しないようにしたい 調査フェーズ リポジトリの閲覧権を頂き、プロジェクト構成

                                                    ジャイアントパンダに注意 - Next.js のビルド改善 (株式会社GiXo様)
                                                  • Scala で書いたマイクロサービスを Go で書き直した話 - JX通信社エンジニアブログ

                                                    この記事はJX通信社 Advent Calendar 2019 2日目の記事です。 昨日は、たっちさんの「Kubernetes Admission Webhookでリソース作成を自在にコントロールする」でした。 こんにちは、サーバーサイドエンジニアの @kimihiro_n です。 今回は長年動かしてた Scala のマイクロサービスのリビルドを行った話をしようと思います。 TL;DR 新しい言語を投入するのにマイクロサービスは便利 Scala で感じていた問題点を解消しつつ Go へ移行できた 消費メモリが大きく減って安定稼働できるようになった 予防線を貼っておきますと、Scala より Go のほうがいいよね、といった本旨ではありません。 Scala で書いたマイクロサービス 弊社のマイクロサービスの一つにカテゴリ分類専用のサービスが存在します。 カテゴリやキーワードを登録しておくとル

                                                      Scala で書いたマイクロサービスを Go で書き直した話 - JX通信社エンジニアブログ
                                                    • Kubernetesをぶち壊す10の奇妙な方法 (前編) - Qiita

                                                      はじめに これは、ZOZOテクノロジーズ #4 Advent Calendar 2019 12日目のエントリーです。 今回はKubeConに参加して面白かったセッションの1つである「10 weird ways to blow up your Kubernetes(Kubernetesをぶち壊す10の奇妙な方法)」をご紹介します。 この他にも、「Airbnbの事例に学ぶKubernetesとマイクロサービスのあり方 @ KubeCon Seattle 2018」という記事も執筆しているので、合わせてご覧ください。 また、このセッションのスピーカーであるMelanie Cebulaは、CloudNative Days Tokyo 2019のキーノートスピーカーとしても来日し、登壇しています。 後編書きました! セッションの背景 セッションスピーカーであるMelanieとBruceは、Airbn

                                                        Kubernetesをぶち壊す10の奇妙な方法 (前編) - Qiita
                                                      • Linux perf Examples

                                                        Recent posts: 22 Jul 2024 » No More Blue Fridays 24 Mar 2024 » Linux Crisis Tools 17 Mar 2024 » The Return of the Frame Pointers 10 Mar 2024 » eBPF Documentary 28 Apr 2023 » eBPF Observability Tools Are Not Security Tools 01 Mar 2023 » USENIX SREcon APAC 2022: Computing Performance: What's on the Horizon 17 Feb 2023 » USENIX SREcon APAC 2023: CFP 02 May 2022 » Brendan@Intel.com 15 Apr 2022 » Netfl

                                                        • Ruby のメモリ使用量問題を調査し upstream で解決していただいた話 - ANDPAD Tech Blog

                                                          はじめに こんにちは。リアーキテクティングチームの髙橋と申します。 この記事では、アンドパッドの施工管理サービスで利用している Ruby をバージョンアップしたときに発生したメモリ使用量の問題の発生から解決までをお話しします。 Ruby のバージョンアップ(3.0 -> 3.2) アンドパッドでは昨年 2023 に、施工管理サービスで利用している Ruby を 3.0 から 3.2 にバージョンアップしました。 バージョンアップ自体は過去に確立済みの手法(詳しくは過去記事をご参照ください)により、粛々と進められリリースされました。 ところがこのリリースから数日後、とある問題が発覚しました。 メモリ増大問題 アプリケーションのリソース使用状況を監視している SRE チームのメンバーから、以下のような連絡がありました。 Ruby バージョンアップのリリース以降、アプリケーションの利用するメモリ

                                                            Ruby のメモリ使用量問題を調査し upstream で解決していただいた話 - ANDPAD Tech Blog
                                                          • 「多層キャッシュサーバー」を2人×2日で爆速開発 インフラリソースを10分の1にした、Go製サーバー開発の裏側

                                                            サイバーエージェントグループ横断でGoに関する知見を共有し合う社内勉強会「CA.go」。今回はその社外版として、「FIFA ワールドカップ カタール 2022」を全64試合無料生中継をした新しい未来のテレビ「ABEMA(アベマ)」のチームがGo活用事例を紹介しました。ここで登壇したのは、江頭宏亮氏。「ABEMA」のレコメンドに対する大規模アクセスを支えるGo製サーバー開発について発表しました。全2回。後半は、「Yatagarasu」に対するリクエストの具体例の説明と視聴者からの質問に答えました。前回はこちら。 Yatagarasuに対するリクエストの具体例を説明 江頭宏亮氏(以下、江頭):次に、オリジンのYatagarasuへのリクエストを具体的にどのようにやっているのか、説明したいと思います。 先ほど見せたスクリーンショットだと、右側にモジュールが3つ並んでいたと思いますが、実際は縦スク

                                                              「多層キャッシュサーバー」を2人×2日で爆速開発 インフラリソースを10分の1にした、Go製サーバー開発の裏側
                                                            • Goプログラム実行時間の短縮 - ZOZO TECH BLOG

                                                              こんにちは。生産プラットフォーム開発部の中嶋です。生産プラットフォーム開発部はアパレル生産のDXを進めている部門です。具体的には服作りのIT化を含めたアパレル生産の効率化の促進と「生産支援」のシステムを主にGoで開発しています。今回はその運用の中でGoプログラムの実行時間をどのように短縮したのかを紹介します。 目次 目次 学べること・解決できること 背景 エラー発生 調査・対応 インスタンスの変更 原因 実装アプローチの見直し ゴルーチンを使ったタイムアウト処理 サンプルコード チャネルのクローズについて Goのメモリマネジメントについて スタックとヒープ ゴルーチンとメモリについて ヒープについて 問題の仮説 どのように解決したか 実装イメージ 利用したパッケージ サンプルコード 結果 まとめ 最後に 参考リンク 学べること・解決できること Goのメモリエラーに対するアプローチ例 Go視

                                                                Goプログラム実行時間の短縮 - ZOZO TECH BLOG
                                                              • ルーターでプレゼンする。 - Zopfcode

                                                                市販のネットワークルーターやスイッチに導入することで、元々のファームウェアでは実現できなかった高度な設定や最新のプロトコルが利用できる Linux ディストリビューションの OpenWrt は、2004年の登場から今年でちょうど20周年を迎えた。90年代の Linux ルーターという概念の勃興から、ルーター向け Linux ディストリビューションは DD-WRT や Tomato など複数生まれたが、現在もサポートと新機種の追加が続くほどの活気を保っているのは OpenWrt だけといっても過言ではない。 そんな記念すべき20周年を盛り上げるべく(?)久しぶりにルーター遊びをしたので紹介する。 (本記事は2024年4月26日に岡山理大で開催された Okayama Revengers LT 大会 #2「もう春じゃなぁ〜 LT大会でもするかぁ!」にて発表した以下のスライドを文章にしたものです。

                                                                  ルーターでプレゼンする。 - Zopfcode
                                                                • Aurora MySQLのメモリ不足の原因を特定する

                                                                  シンプルフォーム株式会社で SRE をしている守屋です。 本記事では Aurora MySQL の OOM(メモリ不足)エラーについて、原因となるクエリを特定するために役立つ Tips を弊社での実例を交えてご紹介します。 発端 突如 Slack に鳴り響く不吉な通知。 「パターン青!障害です!!」 どうやら本番環境の Aurora クラスターがフェイルオーバーしてアプリケーションが DB コネクションエラーを引き起こした模様です。幸いインスタンスは冗長化していて Aurora のフェイルオーバーは高速であるため、ユーザー目線では瞬断が発生した程度の比較的影響が小さめな障害に留まりました。しかし SRE としては捨ておけない状況です!早速原因の調査を始めました。 フェイルオーバーの原因 結論から言うとメモリ使用量がスパイクして OOM エラーが発生したことが原因でした。根拠としては Aur

                                                                    Aurora MySQLのメモリ不足の原因を特定する
                                                                  • 詳解: Amazon ECS による CPU とメモリのリソース管理 | Amazon Web Services

                                                                    Amazon Web Services ブログ 詳解: Amazon ECS による CPU とメモリのリソース管理 この記事は How Amazon ECS manages CPU and memory resources (記事公開日: 2019 年 10 月 21 日) を翻訳したものです。 2019 年 8 月 19 日に、コンテナ単位で Linux 上で使用可能なスワップ領域の設定をサポートする Amazon Elastic Container Service (Amazon ECS) の新機能を発表しました。この機会を利用して、ECS のリソース管理がどのように機能するかについて (この新機能によって導入された動作も含めて) 、一歩下がってより全体的な説明をしたいと思います。具体的には、ECS によってさまざまな起動タイプ (すなわち、Amazon EC2 と AWS Farg

                                                                      詳解: Amazon ECS による CPU とメモリのリソース管理 | Amazon Web Services
                                                                    • もう一度読むObservability Engineering - じゃあ、おうちで学べる

                                                                      はじめに 本書『Observability Engineering』は、複雑化の一途をたどる現代のソフトウェアシステムに立ち向かうための、強力な武器となる一冊であり本稿はその読書感想文です。Observability Engineering を今から知りたい方はもちろん、Observability Engineering の基礎を改めて学びたい方もぜひお読みください。この記事もかなりの長さになるので普通に書籍を読んだほうがいいかもです learning.oreilly.com 「Observability:可観測性」という言葉は、近年ソフトウェアエンジニアリングの世界で大きな注目を集めています。しかし、その概念の本質を理解し、実践に移すことは容易ではありません。 本書は、そのオブザーバビリティについて、その基本的な考え方から、具体的な実装方法、そして組織への適用まで、幅広くかつ深く解説して

                                                                        もう一度読むObservability Engineering - じゃあ、おうちで学べる
                                                                      • 理解しやすいコードの書き方~理解容易性の7つの観点~ - Qiita

                                                                        はじめに 「理解容易性」は「保守性」の観点の1つとして重視され、多くの原則や技法が紹介されているが、断片的かつ多様であり、全体像を理解することは難しい。 抽象度は高いが、体系的に観点を整理する事で、その理解の助けとなれば幸いである。 定義 「理解容易性」を簡単に言えば、「理解のしやすさ」であるが、その意味から掘り下げると、「思考する量」と言い換えることができる。 本記事では理解容易性を「思考量の少なさ」と定義し、7つの観点に整理した。 先に要約およびチェックリストを記載し、概略を記載した。 後に詳細で理解のため、各観点毎の説明と個別の原則や技法へのリンクを記載した。 要約 7つの観点の要約を先に示す。 (変数や関数の)名称は分かりやすくする (変数や関数の)役割は1つにする (変数や関数の)参照は狭くする (変数や関数の)状態は変えられなくする (関数やクラスの)面積は小さくする (関数や

                                                                          理解しやすいコードの書き方~理解容易性の7つの観点~ - Qiita
                                                                        • MySQLのOOMと戦った話

                                                                          Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure

                                                                            MySQLのOOMと戦った話
                                                                          • Low-level Container Runtime:Runc Internals - 鳩小屋

                                                                            参考 おさらい runc architecture file main.go and command process runc create setupSpec startContainer linuxContainer LinuxFactory createContainer CreateLibcontainerConfig loadFactory factory.Create runner.run newProcess linuxContainer.Start newParentProcess parentProcess.start() runc init nsenter nsexec runc init(After nsexec) linuxStandardInit.Init runc start 低レベルコンテナランタイムruncの内部処理のまとめです。 参考 2021/05現在:

                                                                              Low-level Container Runtime:Runc Internals - 鳩小屋
                                                                            • DuckDBでお手軽!データフェデレーション - Techtouch Developers Blog

                                                                              tl;dr はじめに DuckDB とは DuckDB では何が読めるのか 使ってみる S3 上のJSON を読んでみる リレーショナルデータベース 他ツールではなく DuckDB を使うメリット しくじりポイント (特にリリースされたばかりの)バージョンには気をつける S3 のオブジェクト数が多い場合不都合がありがち スレッドの調整が必要な場合も Redshift には未対応 終わりに 付録 MySQL のデータを読み込む例の MySQL 側の準備 tl;dr DuckDB 便利だよ。分析以外でも使えるよ 色々な場所のデータを閲覧・結合できるよ。標準SQLも使えるよ ただし、細かい落とし穴は色々あるので気をつけてね はじめに2023年4月にデータエンジニアとして入社したmin(@not_rogue)です。暖かくなるにつれ、YouTube で見た南伊豆ロングトレイル | 松崎町に行く機運が

                                                                                DuckDBでお手軽!データフェデレーション - Techtouch Developers Blog
                                                                              • [速報]Amazon Linux 2022がやってきた!(プレビュー版) | DevelopersIO

                                                                                みなさんこんにちは、杉金です。 Amazon Linux 2の後継にあたるAmazon Linux 2022のプレビュー版がきましたね!ついに!! 公式リンク集 Newsページ GitHub 製品ページ ユーザーガイド Amazon Linux 2022とは Amazon Linux 2022(AL2022)はAWSが独自に提供するLinuxサーバOSです。Amazon Linux 2の後継として今回発表されました。AL2022以降、Amazon Linuxの新しいメジャーバージョンは2年ごとにリリースされ、四半期ごとのマイナーリリースが含まれ、5年間の長期サポートが付属するようです。特徴として、デフォルトでパッケージリポジトリが特定のバージョンにロックでき、継続的デプロイのセットアップを容易にします。また、デフォルトでSELinuxが有効になっています。AL2022は、AWS公式のFAQ

                                                                                  [速報]Amazon Linux 2022がやってきた!(プレビュー版) | DevelopersIO
                                                                                • WEARにおけるKubernetes導入と改善の歩み - ZOZO TECH BLOG

                                                                                  はじめに こんにちは。ブランドソリューション開発本部 WEAR部 SREの和田(@wadason)です。普段は「ファッションコーディネートアプリ WEAR」のSREとしてクラウドの運用やリプレイスをおこなっています。 WEARはサービス開始から10年が経ち、クラウドやオンプレミスを含む大小様々なシステムが稼働しています。アプリケーションを動かすための基盤にはAmazon ECSのようなコンテナを前提としたものから、オンプレミスのAPIやBatchを動かすIISまで幅広く扱っています。そうした中で、約1年前にSREチームが結成され、技術負債の脱却やクラウドを中心としたインフラの運用を行なってきました。当初取り組んでいた大規模なリプレイス案件も落ち着き、チームメンバーが増えてきたので、現在では分散した技術スタックをKubernetesへ統一するリプレイスプロジェクトを開始しています。 本記事で

                                                                                    WEARにおけるKubernetes導入と改善の歩み - ZOZO TECH BLOG