タグ

ブックマーク / hackerslab.aktsk.jp (3)

  • Rails4.2のコネクションプールの実装を理解する - Akatsuki Hackers Lab | 株式会社アカツキ(Akatsuki Inc.)

    tl;dr Railsではコネクションプール数を設定していても、1スレッド辺り1コネクションしか持ちません。 発端 アカツキではRails + Unicorn + Nginx + MySQLの構成をAWSで運用しており、c3.4xlargeのインスタンス上で1台辺り64のUnicornワーカープロセスが実行される設定になっています。 ソーシャルゲームでは時にたくさんのアプリケーションサーバを並列稼働される必要がでてきます。特に年末年始の時期は平時の2-3倍のトラフィックが予想され、アプリケーションサーバを最大100台で稼働させる必要がありました。 Railsdatabase.ymlのpool設定は5だったので、単純に考えると最大 100台 * 64プロセス * 5接続 = 32,000個の接続が常時貼られるのでは?MySQLのmax_connectionsの設定は大丈夫か?という議論があ

    Rails4.2のコネクションプールの実装を理解する - Akatsuki Hackers Lab | 株式会社アカツキ(Akatsuki Inc.)
  • Redis、計算量の恐怖 | Akatsuki Hackers Lab アカツキハッカーズラボ

    はじめまして。アカツキのサーバエンジニアのこうのです。サウザンドメモリーズで主にサーバ側のプログラム・インフラを担当しています。 今回はサウザンドメモリーズで発生した、Redisにまつわるトラブルを紹介したいと思います。 TL;DR RedisのSorted SetのZRANGE系のコマンドは計算量がO(log(N)+M)(Mは取得結果の数)になるので、 適切にLIMITをつけるなどして取得結果数を制限しないと負荷が高くなってしまいますよ、というお話。 背景 サウザンドメモリーズではバトル出撃時に一緒に出撃するフレンドやランダムに選ばれた他のプレイヤーを選択することができます。 この「ランダムに選ばれた他のプレイヤー」の選択ロジックに弊社ではRedisのSorted Setを利用した実装を行っています。 ランダムといってもすべてのプレイヤーからランダムで選んでしまってはアクティブでないプレ

    Redis、計算量の恐怖 | Akatsuki Hackers Lab アカツキハッカーズラボ
  • RubyKaigi2014 速報(4) - KeyNote: Coming soon... (Matz) - Akatsuki Hackers Lab | 株式会社アカツキ(Akatsuki Inc.)

    Ruby 3.0について 10年位の期間がかかるかもしれないが、考えてみよう ひとつはConcurrency、ひとつはJIT (LLVM?)、そしてStatic Typing Static typing 20世紀に生まれた言語の多くは、変数に型が無い 最近の言語: Scara, TypeScript, Dart, Goはスクリプト言語っぽい使われ方をされるものでも、静的な方を持っている 悔しいのでRubyでも静的型を考えたい Ruby Issue #9999: Type Annotations Python PEP:3107 に近い考え方 Pythonは型チェックしない。ドキュメント。型チェックするかどうかは処理系に任せる pypy という処理系ではチェックする また、Dartは型チェックしないモードもある 何をモチベーションにして static typing したいのか? パフォーマンス

    RubyKaigi2014 速報(4) - KeyNote: Coming soon... (Matz) - Akatsuki Hackers Lab | 株式会社アカツキ(Akatsuki Inc.)
  • 1