こんにちは、初めまして。 最近ようやく花粉症も治まってきたエンジニアのシモムラです。 2016年3月にアカツキとドリコムさんの間で社会人交換留学という取り組みを行いましたので、その内容を紹介します。
続きを読む5分で分かるRedis Clusterの構築方法
はじめに
Developpers Summit 2016で「大規模Redisサーバ縮小化の戦い」というテーマで発表してきました。
Redisのdumpファイルを取得して、それらをマージする方法や、Redis内で使用するdb数を増やせば、接続数も増えていく、といった話をしました。 特にAWS上でRedisを運用する場合、ElastiCacheの接続数上限は変更できないことは見落としがちなポイントなので、サーバを何十台もスケールアウトする人たちにとって役に立つノウハウが共有できたのではないでしょうか。
当日はネタスライドを山程仕込んで 会場は大爆笑だったのですが、slideshareではネタスライドは割愛しております。
今回のお話
デブサミのスライドでは、ほとんどの話が縮小についての話だったので、今回はRedisの信頼性について考えてみたいと思います。
続きを読むRails4.2のコネクションプールの実装を理解する
tl;dr
Railsではコネクションプール数を設定していても、1スレッド辺り1コネクションしか持ちません。
発端
アカツキではRails + Unicorn + Nginx + MySQLの構成をAWSで運用しており、c3.4xlarge
のインスタンス上で1台辺り64のUnicornワーカープロセスが実行される設定になっています。
ソーシャルゲームでは時にたくさんのアプリケーションサーバを並列稼働される必要がでてきます。特に年末年始の時期は平時の2-3倍のトラフィックが予想され、アプリケーションサーバを最大100台で稼働させる必要がありました。
Railsのdatabase.ymlのpool設定は5だったので、単純に考えると最大 100台 * 64プロセス * 5接続 = 32,000個の接続が常時貼られるのでは?MySQLのmax_connections
の設定は大丈夫か?という議論があり、Railsのコネクションプールの実装をきちんと理解すべき!ということで、調査しました。
急いで覚えるElixir: Enumerable編
ElixirのEnumerable
前回の記事から続いて、今回はElixirで利用する基本的な制御構文について学んでいきます。
Keyword list
多くの関数型プログラム言語では、2要素のtupleによって関連付けられたデータ構造を表現します。 Elixirでは、最初の要素がAtomであるTupleのListのことをKeyword listと呼びます。
iex> list = [{:a, 1}, {:b, 2}]
[a: 1, b: 2]
iex> list == [a: 1, b: 2]
true
iex> list[:a]
1
キーが重複している場合、先頭に格納された値が優先的に読まれます。
続きを読む