「Memcached」を含む日記 RSS

はてなキーワード: Memcachedとは

2023-07-31

anond:20230731104947

最近最前線から離れててあんまり追えてないけど、現役のとき2008年くらいか10年くらいの間で、仕事のやり方や設計の考え方が大きく変わったIT技術要素で、いまぱっと思い浮かぶのはこんな感じかな。

分野にもよるし、調査して試作した結果自分業務には採用しなかった技術とかもある。流行ると思って使えるようになったけど流行らなかった技術を入れるとたぶんもっとある。

あと、新機種が出てOSが新しくなったり、ミドルウェアの新バージョン対応テスト手法進化もけっこうカロリー高いけどここには書いてない。

自分フロントエンド専門でReactしかやらない」みたいに分野を絞れば大分減るけど、その技術が何年持つかわからいか普通リスクヘッジのために他の技術も齧らざるを得ないし、バックエンドとかの人と議論するのに結局他分野の知識もそれなりに必要

ソーシャルコーディング(GitHub)

スマホアプリ(iOS, Android)

NoSQL(memcached, Redis, Cassandra)

暗号通貨

クラウドアーキテクチャ、XaaS(AWS, Google Cloud, MicrosoftAzure)

CI/CD(Travis CI, CircleCI, Jenkins)

トランスパイラ(Browserify, webpack, CoffeeScript, TypeScript)

システム(Rust, TypeScript, Haskell)

テスト自動化(xUnitSelenium)

クリーンアーキテクチャ

コンテナDocker

オーケストレーション(Ansible, Kubernetes, Terraform)

機械学習(Python, MATLAB, 線形代数数学知識)

HTML5(WebGL, WebAudio他)

SPA(React, AngularJS, Ember.js, Vue.js)

マイクロサービスアーキテクチャ

3Dゲームエンジン(Unreal Engine無償化、Unity5)の他分野への普及

GraphQL

機械学習ライブラリ(Tensorflow, PyTorch, Chainer)

Jupyter Notebook

NFT

モバイルアプリフレームワーク(React Native, Flutter/Dart)

シングルサインオン

多要素認証生体認証

メタバース

2019-12-10

PHP session empty for memcached

原因

php.ini の memcached.sess_prefix が違っている。またはデフォルト値が運用と異なる。

問題となる動作

memcached管理してるPHPセッション値が空である。$_SESSION == []

session_start() returned true.

php.ini に記載されている session.save_handler, session.save_path の値は問題ない。

エラーなし。正常に memcached接続できているように見える。

2015-03-17

perl引数の渡し方の流儀がよくわからない

と思ったんだけど,ちゃんと以下に書いていた.

perlmodstyle - Perl モジュールスタイルガイド http://perldoc.jp/docs/perl/5.20.1/perlmodstyle.pod

引数ハッシュで渡すかハッシュリファレンスで渡すかの問題は主に個人的スタイル問題です。

ハイフンで始まるハッシュキー (-name) や全て大文字ハッシュキー (NAME) は、普通の小文字の文字列が => 演算子で扱えなかった 古いバージョンPerl遺物です。

ということで結論

もっと早く調べておくべきだった.というかちゃんと教材を読めということか.

2013-03-13

サーバ初心者Webサービスを公開するうえで考えたこと

だって自作Webサービス公開しました

http://www.radiosonde.net/

これまで他の人に用意してもらったサーバ自分プログラムを動かしたことはありましたが

自分自身で一からサーバをセットアップしたことはほとんどなかったので、いろいろとハマりました。

作業を進める上で困ったり考えたりしたことを書いていきます

ちなみにサーバ自体はさくらのクラウドOSにはCentOSを使用しているので、それ前提のお話になります

SSHファイヤーウォールの設定

最初サーバを起動してから速やかにSSHファイヤーウォールの設定を変更しました。

はてブなんかでも定期的に話題になっているのでおなじみですね。

SSHポートを22以外の別のポートに変更する

rootによるリモートログインを禁止する

パスワードログインを禁止し、鍵認証有効にする

・念のためrootパスワードを潰しておく

SSHHTTP(S)など、どうしても公開しなければならないポート以外は遮断する

SSHポートについてIP制限が行えるならば尚良い

さらっと書きましたが、設定をミスって自分自身もログインできなくなり、何度かOSの再インストールを繰り返しています

から気付いた事ですが、さくらのクラウドではクラウド管理画面のリモートスクリーン経由でローカルログインできるので

別にOSインストールしなくてもiptablesの設定を変更できたんですよね...

逆に言うといくらファイヤーウォールとSSHを設定しても管理画面にパスワードログイン環境が残ってしまうので

パスワード管理には引き続きしっかり気を使う必要がある。ということでもあります


Webアプリの動作が重い

httpd,php,mySQL,memcachedなど必要サービスインストール、設定し

作成したWebアプリプログラムを乗せて動かしてみました。が、動作が重いような...

開発環境ではさくさく動いていたのに、本番環境ではどのページ遷移ももっさりしています

abで計測してみたところ、開発環境のおよそ2分の1のスコアとなってしまいました。

開発環境が仮想2コアのメモリ1Gだったのに対し、本番環境が仮想1コアのメモリ2G

CPUの性能について半減しているのでそのせいかな、と思いつつ設定を見なおしていたところ

特に使っていないと思われたipv6を停止した途端にパフォーマンス改善されました。

ページ遷移に伴うもっさり感が解消され、abの計測結果も開発環境と遜色ない結果が出ています

デフォルト有効になっていたipv6の影響により余計な処理が走っていたのかもしれません。


サーバから送信したメール迷惑メールと判定される

パフォーマンス改善に喜んだのも束の間、会員登録などの処理でWebアプリからメールを送信したところ、Gmail宛のメールがことごとく迷惑メールと判定されるという事案が発生。

spfの設定を行なうメールの内容について吟味するなどの回避策を試してみましたが一向に改善されません。

試しにHotMailexciteメールアカウントに送信したところ、そちらではそもそもメールを受け付けてもらえずエラーコードが返って来る始末。

困り果てていたところ、エラーの内容からサーバIPがspamhousにスパム送信元として登録されていることが判明しました。

postfixホスト名の設定がデフォルトで「localhost.localdomain」などとなっており、それをそのまま使っていたためにGmailスパム送信元として通報してしまったようです。

設定を修正し、spamhousに解除依頼を提出。事なきを得ました。


KVSの変更

クラウドを利用すれば、サーバを停止することなく簡単な設定でスケールできるようになる。

と、自分勝手に思い込んでいたせいなのですが、消えては困るデータの一部をmemcachedに保存する実装を行なっていました。

実際のところさくらのクラウドではサーバを完全に停止しなければプラン変更を実施できないし

そもそもサーバが落ちたらどうするんだよ。ということで、急遽KVSを変更する必要に迫られました。

速度の低下が気にかかったため、いくつかの候補を実際に動かし

phpスクリプトから1万件のデータ読み書きを行うという形でmemcached比較してみたところ次のような結果に。

サービス1万件書込1万件読込
memcached 2.55秒 2.30秒
handlersocket 21.23 2.71秒
InnoDB20.23 5.10
kyotoTycoon 8.22秒 7.72秒

さすがに読み書きそれぞれmemcachedが最速ですが、読み出しについてはhandlersocketも負けていません。mySQLから普通にSELECTしてもmemcachedの2倍程度の時間しかからないという結果が意外でした。

しかしながら書き込みのほうではhandlersocketもmemcached10倍近くの時間がかかっており、少々速度的な影響が気になってきますmemcachedの倍のパフォーマンスを記録したという記事を見たことがあるので、設定、チューニングについて生かしきれていない部分があるのかもしれないとも思いましたが、知識が不足しているところで無理をすると問題が発生した時に対処できないと考え、候補から除外することとしました。

結局、今回の用途では読み込み処理より書き込み処理のほうが圧倒的に多いことも考慮し、kyotoTycoonを採用しました。実際の利用箇所に組み込んでabで計測してみたところ、だいたい30%程度のパフォーマンス低下にとどまっており、これなら許容範囲かと考えています

mySQLレプリケーションが止まる

実行系と参照系に分ける形でmySQLレプリケーションを行なっていたのですが、度々レプリケーションが停止する現象が発生しました。

一部のテーブルについて肥大する可能性が考えられたため、参照系に接続するプログラムで使わないテーブルをレプリケーションから除外していたのが原因です。

例えばtabelAをレプリケーションし、tableXをレプリケーションしないという設定にしたうえで

実行系でINSERT INTO `tableA` SELECT `value` FROM `tableX`などといったクエリを発行すると、参照系にtableXが無いためエラーが発生して止まってしまます

レプリケーションするテーブルを限定する場合プログラム側でも注意を払わないと危険です。当たり前ですが。

サーバ監視にmonitを使用

監視といえばcactinagios定番なのかもしれませんが、設定が複雑そうで尻込みし、monitを使用することにしました。

簡単な設定でloadaverageやメモリHDDの使用量をチェックできるほか

httpdmysqldなどといったサービスプロセス監視し、もし落ちていたら自動で起動してくれるので助かります

Webアプリの秘匿

パスワード保護を行うとしても、サイト全体の管理画面など自分しか使わないプログラムWeb晒しておきたくない。

というわけで、一部のWebアプリを秘匿する設定を行いました。

管理画面のWebアプリを9999番など閉じているポートに設置した上で、SSHを利用したトンネルを掘ります。といっても

ssh -t -L 9999:localhost:9999 user@xxx.xxx.xxx.xxx

上記のようなコマンド管理画面のWebアプリを置いたサーバログインするだけです。

ブラウザアドレス欄にhttp://localhost:9999/と打ち込めば、接続が開いている間のみアクセス可能になる感じですね。

サーバログインできる人でなければ実行できないことなので、気分的にある程度安心します。

SSHログバックアップ

自動ログバックアップを行いたいと考えたのですが、パスワード無しの鍵でログインして転送する形には抵抗がありました。

調べてみたところ、authorized_keysに公開鍵を記入する際の設定で、その鍵でできることを制限するという手段があるようでした。

具体的には、authorized_keysに

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="some commands" ssh-rsa AAAAB3NzaC1yc2EAAA...

などとして公開鍵を追加しておくと、その鍵でログインした直後にcommand=""の部分で設定したコマンドを実行して接続を終了する挙動となり

接続フォワードもできなくなるため、パスワード無しでも鍵の流出に関するリスクを最低限に留めることができるというわけです。

commandの実行結果は標準出力から受け取ることができるので、例えばcommand=""の部分にファイルの内容を表示する処理を設定していたとすれば

ssh -i .ssh/no_password_key user@xxx.xxx.xxx.xxx > /path/to/file

などとしてログインの結果をファイルに書き込むだけで、簡単にファイル転送が実現できます


まとめ

他にも大小さまざまな問題に行きあたりましたが、忘れてしまったor書ききれないのでここまでとします。

たった1つのサイトを公開するにしても問題というのは尽きないものだと実感させられました。

今は基本的な情報だけでなく、ちょっと突っ込んだ内容でも検索で解決していけるので嬉しいですね。手がかりを残してくれた先達に感謝することしきりです。

現状ではひとまずの見切りを付けて公開していますが、より堅牢で負荷に強いサーバとなるよう、随時チューニングを行なっていこうと考えています

最後

作ったWebサービスについて少し書きます

サイト名は「Radiosonde」

個人サイトや小規模な商業サイトなどプロモーションにあまりお金をかけられないサイトを主な対象とした、無料で出稿できる広告ネットワークサービスです。

既存サービスで近いのは「あわせて読みたい」や「zenback」、各社提供RSS相互リンクサービスなどになるでしょうか。

広告としての体裁がある分、それらより若干積極的な性質になるのではと考えています

現時点ではサービス本体のプロモーションに苦心するという本末転倒のものの状況でありますが、もしよろしければ見ていただけると嬉しいです。

2011-02-26

http://anond.hatelabo.jp/20110223195508

プログラマー」と名乗っている人をあんまり信用しないほうがいいというのはよく言われる話だが最近そのことを痛感している。今やってる仕事の一環として、「ほかのプログラマープログラムを書いてもらって、それをレビューする」という作業があるのだが、この「ほかのプログラマーが書いたプログラム」というのがひどい。クズたいプログラムばっかりだ。

物心ついた頃から不可解で仕方がなかった

たいしたプログラムも書けない そのくせに威張り散らしてる

ってな、黒夢の『C.Y.HEAD』という曲の歌い出しですけど、最近この部分がぐるぐるぐるぐると頭を回るものだよ。

ええ、わかってますよ。仕事相手の悪口を公的な場で言うなんて、問題があるって言うんでしょう。まあ、それもそうなんだけど、たいしたプログラムも書けないくせにプログラマー名乗ってる奴らに本当に腹が立つからせいぜい堂々と書きますよ。

「忙しくってコードの質が下がってる」っていうような事情もあるでしょうが、まともに納品が出来ないなら仕事なら受けるべきでないわけだし、ビジネス世界は「結果責任」を負うものですから、「事情」なんてのは知ったこっちゃないね

……っていうふうにね、「仕事」というのは基本的に「事情」を無視するものなんですね。だから基本的にはあんまり僕は「仕事」が好きじゃない。とはいえ、今いっしょに働いている人たちはかなり「事情」というものを意識していて、おかげでそれほど辛くはないんだけれども。ただ「ほかのプログラマー」みたいな、外部の人たちは、事情を共有することができないので、「あー! クズたいコード送ってきやがって!」ということにしかならない。「事情」を共有できるような、近しい距離の人たちとのみ、仕事をしていたいものですよ。

で、そのコードがどういうふうにダメなのかというと、主に2つの側面がある。

【1】文法が正しくない、プログラムが読みづらい

【2】ソフトウェア目的意識できていない

【1】はもう、そのまんま。文法がおかしいとか、同じ様な処理コピペで5回かいてるとか、1メソッドが長すぎる上に変数が"hoge"とかでわかりにくく、意味を取るのに困難があるとか。「こんなプログラムに金を払わなければならないのか……」と思うとめまいがする。何せ、それを「まともなプログラム」にレビューするのは僕なのだ。で、その作業に対してお金は一銭も入ってこないのだ。

不具合先祖返りなんかは誰にでもあるミスだし、それを点検するために僕がチェックしているわけなので、そのあたりはいい。しかし文法の狂っているプログラムを修正するというのは、時には全体を書き換えなくてはならなくて、非常に労力である。それに、受け取ったコードは「ほかのプログラマー」さんの「成果物であるので、あまり手を加えすぎるわけにもいかない。それが「仕様書」をもとにしたコード場合、あまり修正するとクライアントに「自分はこんなこと言っていない」と思われてしま可能性もある。だいいち、こんな作業にあんまり時間をかけたら、ほかのもっと大切な作業をする時間がなくなってしまうのだ。こういった様々な事情を考え合わせ、うまいことバランス取りながら、修正の妥協点を探していくわけだが、これはとてつもない頭脳労働である。疲れる。

【2】は例えば、「バリデートチェック」のためのコードなのに、「intは2バイト」ということばっかり書いて来るとか。「intは2バイトはわかったけど、いつからバリデートチェックになるのだろう」と思って読み進めても、最後までintは2バイトしかチェックしていない。依頼主であるからSIerは、そんなプログラムに金を払いたがるだろうか?

もっと具体的な例。ゲーム会社が、「我が社のキャラクタ版権を利用して、凄く売れるSNSゲームを作ってくれ」と依頼してきたとする。プログラマーが打ち合わせに行くと、企画者は「動的フラッシュも使って、100万ユーザーが遊べる。。。」という話を延々とする。プログラマーは「了解しました」と言って安請負する。そのプログラムメイン処理だけで1000行というもので、memcachedの「mem」の字もないし、「オブジェクト指向」といった概念も勿論ない。これでは仮にSNSゲームリリースされたとしても、100人さえも遊べない。

このくらいならマシなほうで、ひどいのになるとフリーランス会社から紹介されたプログラマーで、「SQLselect文くらいしかやった事がない」とか平気で送りこんでくる。たった一人で。

また、意味のないコメントも多い。ループ処理に、「イントのiに3を代入する」と書いて、何の意味があるのだ? せめて「処理速度改善の為にIntegerは使わずにプリミティブのintを使う!」というふうに書くのが本来だと思う、まぁ嘘なんだけど。だって、そんなコメントみて、「なるほど」って誰が思いますかね?

コメントには必ず「目的」というものがあって、次にソースを読む人は処理の概要を知りたいのだから、「プログラム」をそのまんまコメントにしてもダメなんですよ。そういう単純で、最も重要なことが意識できないで、どうして堂々と「プログラマー」なんて名乗れるのか知らん、と思うぜ。

一番、腹が立つのは「偽SEですね。「プログラムはだれでもできるでしょ、重要なのは業務知識でしょ!」みたいなのが偽SE。こういうのを本当に思っているのがいる。業務の画面遷移さえ理解してないSEがだよ。

上の例はさすがに大げさでも、「僕は、プログラムが好きでソフト開発者になりました」とか言ってまともにプログラムが書けない奴は、頻繁にいる。自分サーバ建てろよ。自分で簡単なサービスつくる事もできないなら、向いてないから辞めてしまえ。

「オレはサーバエンジニアじゃないかコマンド打てない」みたいなね。

世も末だ!

ここに挙げたのは「最低限」のことで、「より読みやすく」「より自然に」「より美しく」というところを、自分能力限界まで突き詰めてこそ、プロってもんじゃないんかね。もちろん時間や諸々の事情相談してのこととはいえ、「26歳の若造吐き気を催すような拙いプログラム」を送ってくる、30代40代のプロプログラマーってのはいかがなもんでしょう?

身の程を知れというか。

なんでプログラム書けない人がプログラマーなんかやってんだろ?

んで、なんでそういう人に「仕事」があるんだろうか?

世の中ってのは本当にわからんもんです

身の程を知れよ。

自分の欲望ばっかり考えやがってね。

2010-09-08

http://anond.hatelabo.jp/20100908120553

そんなことは言っていない

最近Webシステムって、遅いことがあるよねperlにしろRubyにしろ・・・ という話題をすると・・・mod_perlは遅くないとか、lightyとかmemcachedとか いう返答が帰ってくるのにうんざりした。... 』

Webシステムが 根源的に遅いのか、速いのか そんなことは ではなく。

perlが遅いとか、Rubyが遅いとか、PHPでもJavaでもなんでもいいよ。 それが遅いだ、速いだ。あげくはHTTPApachelightyだ memcached だmysqlだ。

他社が作ってる 又は 他人が作ってるOSSが作ってる ソフトの話をされることにうんざりした。

という話だ。

そりゃ、それぞれ、その会社がやることであって、貴方のところじゃないでしょと。 貴方のところのパートを速くするお話がしたいんだよと。

貴方のところがmod_perlなりRubyなりを 中までいじって速くしてくれるのか?

http://anond.hatelabo.jp/20100908113101

追加だけど

お金があったとして お金があるならmemcached,mysql,mod_perl,RoRの中を調べてみます じゃ 困るんだよ。

淡々と、memcached,mysql,mod_perl,RoR の中を探っていました。お金さえあれば、その経験を生かして 良い物が作れます。じゃないと。

他人に説明できない。

http://anond.hatelabo.jp/20100908021910

議論にならないから、 『今のWebシステムがなんで遅いのか』を述べてから言ってみて。

ちなみに、DBが9ms プログラムが1msだから10msのDB改善しましょうねってのはわかるが。プログラムを0.5msにすることで、5%ほど改善することも事実なんだよね。

そして、DBなんて、これ以上そんなに早くなるの?と。memcached?それは、みんな当たり前にやってることでしょ?差別化要因にならぬ。

で、単位時間100万セッション貼ってたら5万セッションほどそれで改善するわけだ。複合効果でDBも楽になるだろ。1セッションが短くなれば。

逆に言えば、DB速くしますって Mysqlの中身を改造しますならPGmemcached入れますだけだとね・・・

memcachedいれた上に、独自改造なので他社よりさらに速いです。なら、それはわかる。エンジニアリングだ。

その差は小さいけど、重要なんだよね。memcachedを使うだけ?それとも、memcachedを使いこなしてパラメーターだけじゃなくて、中身のチューニングまでやってくれんの?

それは、MysqlでもPostgreqlでもORACLEでも、何でもいいんだけどさ。

最近Webシステムって、遅いことがあるよねperlにしろRubyにしろ・・・

という話題をすると・・・mod_perlは遅くないとか、lightyとかmemcachedとか いう返答が帰ってくるのにうんざりした。

その手のチューニングは、別に他のシステムでも出来るだろうと、比較する必要性がない。

外部パーツとして単純導入できるCPU高速化なり、HTTPDの変更なり、memcachedなり、そんなもの提案してもらう必要性を余り感じない。

純粋に、お前のところのWebシステムは そういう外部要素なしに速いのか?って話だよ。単純に金で解決する感じの話をベンダーに聞く意味を感じない。他の会社にやらせたっていいんだから。

mod_perlが速いのはわかった。じゃぁ、mod_perlで3行ぐらいで書いたHello worldと比べて、御社のそのなんとかシステムで表示するHello worldは遅くなったりしてないんだよね?

でも、認証とか通してHello worldだすから遅くなるよね?

その、ベーシック認証とか通す時間は 純粋プログラマの腕に依存してくる。そこが速いのか?って事だよ。memcachedいれれば?そら、誰でも同じだ。御社だけじゃない。

某社の弊社が悪いんじゃないんです。memcachedが悪いんですにも、笑ったけど。

バズワードはいらないから、御社の独自技術の話をしてくれ

2010-08-14

http://anond.hatelabo.jp/20100814065742

うわ、はずかしい。

高負荷が原因だって

http://togetter.com/li/41702

memcachedメインスレッドイベントキューには、listenとタイムアウトイベントがのっていて、高負荷になるとタイムアウトイベントの再挿入に失敗する様子。とりあえずはevent_base_loopを再実行すれば良さそうだけど、正しい対処かは不明

http://anond.hatelabo.jp/20100814035048

その通り、過負荷が原因でmemcachedが落ちたっていう解釈も合ってるが、

エンジニア側に立つと「負荷に耐えられなかった原因」っていう見方をする必要があるからこういう表現になってるんだと思う

mixiの件

mixi Engineers’ Blog » mixi大規模障害について

障害の最中に何度か、mixi側で原因は把握しているって情報を目にしたんだけど…

全然原因把握できてないんじゃないの?

memcachedが落ちるのが原因で障害が起こってるって意味だったのかな?

それって原因じゃなくて事象じゃないの?

2010-02-23

第50回PHP勉強会いってきました

ブログとかもってないんでanondメモメモ

はてな記法とか無視で読みにくいですがゴメンナサイ。

かいたひと→http://twitter.com/chobi_e

follow/unfollowはご自由にどうぞ。

うん、次なんか書くまでにはブログ用意しておこう。

第50回PHP勉強会

===============

会社としてもOpenSocialに関わってるし、個人でもちょいちょい

勉強がてらに手を出しているので参加させていただきました。

会場を提供してくださったコンテンツワンさんありがとうございました。

http://www.contents-one.co.jp/


ほいではメモの公開。

聞き逃しや誤記もあるかと思うので参照はほどほどに。

mixiアプリについて(@Weboo)

=============================

mixi機能の紹介とOpenSocialAPIリファレンス的な説明。

技術的な情報についてはほぼ公開されている範囲内なので、

mixiデベロッパーページを参照ください。

あとは公開するのは微妙なので割愛。

PHPWEB開発を行うようにしてオープンソーシャルアプリを作る(@KuniTsuji)

=======================================================================

CodeIgniterを使ってのmixiアプリ構築についてのお話

OpenSocial開発しているので全て既知の情報だったので

メモがありません。ゴメンナサイ。

要約するとPCはつくるのめんどいけどモバイルだとぺらいちで済むし、

ユーザー認証mixiが全て受け持ってくれるので楽よね!

NDA的に微妙なので詳細割愛

運用した気になるモバイルオープンソーシャル (@cocoitiban)

=========================================================

ウノウさんは社員募集中、@cocoitibanは彼女募集中

@cocoitibanのお仕事

・緊急案件ネガティブ発言

・社内案件で困ると一緒に頭抱えるのがお仕事

会社でもここいちばんと呼ばれているそうです(ココイチ

ウノウサービス

映画生活(ピアに売却)、フォト増、clipp、まちつく

・まちつくについて

位置ゲー、もともとふつうモバイルアプリとして提供していた。(ユーザー数非公開)

http://mt9.jp/

mixiアプリ まちつく(ユーザー数250万人くらい)

 ・リリース

  ・社長がやりたい→同僚がすごい勢いで作成。@cocoitibanは横で傍観

  ・mixiアプリ開発工数がえらい少ない。

モバイルOpenSocialって元のサービスがあれば結構勢いですぐ作れるんですよね。)

  ・mixiアプリオープン日に各社アプリ大盛況

   ・開始数分でロードアベレージが100とかのサーバーが発生

   ・ロードアベレージ1000でも登録できるんだー

   そして、当然のように他社を含め登録ができなくなるw

   ・初日から1週間は1日10万のペースで増えた

    ・mixiに登録しているユーザーだからまちつくに登録という意識は低いっぽいですが

   ・画像生成用のサーバーパフォーマンスが最大の問題に。

    ・ウノウには3時間画像生成をキュー処理に書き換えたやつがいる

    ・ボトルネックになりそうなものを全部退治

    ・できる限り愛されゆるふわコーディング

    ・ハードウェア確実に足りないので購入進める

     ・二日目、三日目と同じように+10万人ってトラフィックをさばかなきゃいけない

   ・リリースから今まで

   ・初期(パフォーマンスアップ)

    ・回線が足りなくなりつつあることに気がつく100Mなのに・・・

    ・画像サーバーを外部へ→ AmazonS3

  ・サーバー間に合わないので一部の機能をEC2

   ・決めてから1週間くらいでリリース

  

  ・ユーザー数が数万想定のコードを書き直し

  ・Memcached適用範囲を増やす

   ・一部機能を企画レベルで見直しふかがひくなるかつ、よりよい動作へ。

  ・初期パフォーマンスアップ

    ・L7ロードバランサふやす

    ・DBマスタ分割

     クエリチューニングされていてCPUやDisk ioのreadはすかすかだけどWriteが痛い事に

    ・ORMの機能をつかって分割

     ・トランザクション上影響ないものを分割

      ・2層コミットとか。、XAトランザクションは適用せず。

    ・サーバー台数的にはそんなにない。

   ・中期

    ・DBサーバ分割も厳しくなってきた

     ・ちょっとだけいいサーバーに置き換え

      →あっさり解決

    ・本格的な機能改善

     ユーザーに不便かけてる機能とかを大幅見直し

    ・社員数増員

     ・8Fに追加して4Fに事務所を移すことに

     ・引っ越し大変でした

    ・課金等をリリース

     ・可能な限り早くしたかったがユーザーに不便をかけている段階ではリリースできなかった。

   ・中期

    ・一部処理をQ4Mに置き換え

     ・EC2とはおわかれできた

     ・EC2は悪くないがサーバーがある現状ではコスト間と運用の体制のにゃー(メモ終わる前に次のページへ)

   ・まとめると

    ・数ヶ月、数人のエンジニアでおこなわれたので長短納期

    ・力業だが安定志向を目指す方がいい

    ・変わったことやると大体トラブって死ぬ

     ・しかし新しい事やらないと間に合わない

  [そのほかメモ]

PHPキュー処理って何使ってます?

   ・Q4M

   ・Gearman

   ・ActiveMQ

 

   ・ワーカーのPHPdaemon化ってどうしよう?

    ・daemontools

    ・自前で実装

    ・そのほかいいのがあれば

   ・キュー処理っているの?

    ・実装クイズ

    ・Friends1000人いて全員取りに行く場合どうする?

    ・本サイト側では追加更新もあるし

    ・キャッシュとして定期的に削除しなきゃだめ

    ・ユーザー数分パッチでとってくる?

    ・いや1000人とってきちゃおうよ

    ・FRIENDSランキング

    ・PCだと事情は違うかもしれない

   ・トラフィックの波が激しい

    ・流入云々でかなり違う

    ・コスト意識的にどう設定したらいいのかが難しい

    ・分散のネックはやはりデータベース

    ・ORMは使うべき

    ・流行るか流行らないか分からないサービスをつくる場合には必要

     ・はやった場合にすぐ分割できるか

      ・トランザクションがネックになる

      ・DBが分かれた場合に二層コミット的なものが必要になる。

       ・XAトランザクション

      ・普通に書いただけでそのコードになるか

      ・トランザクションを正しく処理できるか

    ・KVSとの透過性

    ・逆をいえば上記はコードを綺麗にかけるかどうかなので使わなくてもいいと思う

   ・エンジニアとして思ったこと

    ・EC2はありだけど運用がイントラで運用するのとは違う形になるので経験が必要だと感じた。

    ・AmazoRDSが別の地域で使えるようになるといいなぁ。

   

   ・どきどきするのが課金コストをいやいやでもエンジニア意識せざるを得なくなる

   ・mysql

     ・かなりはやい

   ・半年1年後、国内レベルトラフィックであれば大半のWEBサービスは1台でおk

     ・別案件inno db pluginつかったら半分に

   ・ip_conntrack/iptable

   ・ulimit

   ・Symfony

    ・Symfony使ったけどそんなボトルネックにならなかった的な話。

   ・バッチ処理とかforkで悩むことが多い

# 総評

最近はめっきり大きなトラフィックを扱うことがなかったからちょっと刺激もらえました。

前の会社ではサーバー200台くらい管理してたけど今の会社では数十台程度だし、

そこまでトラフィックもこないのでサーバーエンジニアとしては体たらく気味。

まぁ、業務的には様々な方面でやっているので仕方のない事ですが。

とりあえず現状で出しておいて流行したら確実に死ぬ&寝れなくなるので事前に

コードレビューと対策だけはとっておこうかしらん。

懇親会ももちろん参加させていただきましたが非コミュの私は

震える子鹿のようにただビールをひたすら飲むのでありました。

そんな私に声かけてくださった皆様、ありがとうございます。

名前/ID出していいのか微妙なので割愛させていただきますが、感謝感動雨あられでございます。

そうそう、個人的には今の流行がTwigなので@cocoitibanともうちょっと

お話したかったですが懇親会LTもありーの、飲み過ぎて気持ちわりーので実現せず。

Twigすごく良いとは思うんだけどいまいちドキュメントが少ないので

本当にこれでいいんか?て思うことが結構あるのよねー。

Node周りの実装がぱっと見分かりづらいので難儀。

そいじゃ会社いってきまー

2009-03-26

http://anond.hatelabo.jp/20090326124554

連番ってどういうこと?

順方向に探査すれば?ってこと?

何に使いたいか具体的に書くと、とある処理でwebページを取得するのだけど、その時、urlをキーにmemcachedキャッシュしようとしている。

しかし、urlが長大で250バイトを越えるとmemcachedが受け付けないので、適当な長さの文字列に変換したい。

250バイト未満のキーなら受け付けるmemcachedを使ってキャッシュすることが確定事項。

今は250バイト以上ならmd5値の16進表記を使うようにしている。

しかし、こんなところでmd5ってのも重いだけだなと。

crc32も使えるので、urlを4分割して16バイト長にするのはどうか。

実際どのくらい差があるのか。

と、思ったところでsquidとかその他実用しているキャッシュだったりハッシュテーブルだったりはどんな関数アルゴリズム使ってるのかなと思ったわけ。

今後のためにも調べておきたいと思った。

 
ログイン ユーザー登録
ようこそ ゲスト さん