2020/11/25-27にて開催された LINE DEVELOPER DAY 2020 のフロントエンド情報をまとめています。 まとめられているセッションはすべてアーカイブ視聴が可能となっているため、こたつでゆっくり見てみませんか?

前回からの続き まとめ リクエスト/秒を同じグラフにしてみると、5000〜10000リクエスト(セッション)くらいまでは標準方式やmemcachedが速いけど、それ以上になるとInnoDBの方が高速なのがわかる。 最長待ち時間についても同じで、リクエストが少ない場合の差が無い分InnoDBの安定性が光る!ちなみに数値の差が大きいのでグラフは対数で表示(それでも突き抜けているのがあるけど)。 利用者が少なく、Webサーバが1台*1の場合は標準の方式で運用し、それ以上の規模になった場合はMySQLのInnoDB方式が良いという結論。今回はGCをPHP側で制御したけど、確率で動かすと色々と問題があるのでcronなどで定期実行した方が安心。その場合はMyISAMでも良いかも。 今回は財力の都合でテストしなかったNFSの場合、セッションファイルを保存するディレクトリに階層を作ってWebサーバ側のGC
前回からの続き memcached 使用したmemcachedのバージョンは1.2.1。 クライアントにはPECLのmemcache 1.62を使用。設定は初期値のまま。 GCは1/100の設定だけど、処理自体はmemcached側に任せてPHP側では何もしない。 5000リクエストくらいまでは景気が良いけど、その後どんどん遅くなっている。 最長待ち時間を見ると10000リクエスト以上が明らかにおかしい。abの結果をよく見ると10000リクエスト以上では「Failed requests」が結構ある。 失敗したリクエストの割合を出してみると、3〜5%程度が失敗するみたいだ。ただ、まんべんなく失敗するのではなく失敗する期間というのが存在するようなので、割合を出しても意味は無いような気もする。 失敗した時、PHPは Can't connect to localhost:11211, Cannot
前回からの続き MySQL DBにはMySQL-5.0.27を採用。 MyISAMとInnoDBで比較してみる。MEMORY(HEAP)は試していない。MySQLサーバへはUNIXドメインソケットを使って接続し、毎回接続/切断を行うようにしてみた。GCは1/100のまま。 設定の問題もあるかもしれないけど、リクエスト数が増えるとMyISAMの場合は順調に遅くなってしまう。一方のInnoDBはかなり安定した性能。 MyISAMの場合、DELETEを実行する際にテーブルをロックしてしまうため、レコード数が多い状態で全件走査するDELETEが実行されると、長い時間他のクエリが待たされてしまうのが遅くなる原因ではないかと思う。 最長待ち時間もリクエスト/秒と同じ傾向になっている。ひとつのGCの処理が終わる前に別のGCが起動するという状態が繰り返され、どんどん待ち時間が長くなっているみたい。 設定な
PHPには元々セッション管理の機能が用意されているので、一般的な環境であれば組み込みの関数を呼ぶだけでセッション変数を介して値の保存と取得ができるようになる。 この機能は、内部的にはセッション変数の内容をシリアライズした文字列をファイルに保存し、次のリクエスト時にはファイルの内容をアンシリアライズし変数に展開する方法で実現されている。ファイルはsession.save_pathで設定されたディレクトリ*1下にセッションIDを元にした名前で作られる。 また、セッションが開始される時、session.gc_probability / session.gc_divisorの確率でGCが起動しsession.gc_maxlifetime秒前から更新されていないセッションのファイルが削除され、古いセッションは無効になる。 以上は初期設定でPHPのセッション管理機能を使った場合の動作なのだけど、この方
_ PHPで安全なセッション管理を実現する方法に対する高木さんのコメントへのフォロー 高木さんのはてなブックマークコメントに、 [セキュリティ][乱数][暗号][PHP][moderate] PHPはセッションID生成にsecureな擬似乱数生成系を使用していないようだ。さすがPHPらしい駄目っぷり。 とあって、そこから人がたくさん来ているらしいんで、ちょっとだけフォロー。PHPのセッションID生成は、 sprintf(buf, "%.15s%ld%ld%0.8f", remote_addr ? remote_addr : "", tv.tv_sec, (long int)tv.tv_usec, php_combined_lcg(TSRMLS_C) * 10); なんて感じで、マイクロ秒単位の現在時刻+ユーザーのリモートアドレス+combined-LCG(線形合同法による乱数2つを組み合
単一サーバで提供している社外向けの PHP サイトアクセスが増大してきた(厳密に言うと、アプリケーション数が増大してきた)ので、そろそろ負荷分散を考えなければならなくなってきた。 PHP セッションを複数サーバで共有するというと、セッション情報をどこに入れるか、という事を考えることになる。で、これには、 o NFS マウントしたディスク o DB / チュートリアル といった選択肢があるが、今回は mixi や slashdot でも導入されてるとか言う memcached を使ってみることにした。 使ってみた限りではキャッシュ読み書きはさすがに高速。どっちかっていうと PHP 応答が遅い(アプリ側の)方が問題になりそうだ。 -- セッションハンドラには、weirdsessionを使った。 session_set_save_handler() でセッションハンドラをオーバライドしているので
僕が、HttpSessionをやたらと使うテクノロジに懐疑的な理由をちょっとだけ。 実装上の話と設計上の話に分けて考えてみたり。 まずは、「JavaにおけるHttpSession」が、アレでナニな理由。 HttpSessionが、どの様に保持されるかは、APサーバの実装依存。 つまり、どういう事かというと、HttpRequestのたんびに、どっかにシリアライズしてもイイのです。 大抵のAPサーバは、HttpSessionの内容を常に全てメモリ上に保持する訳ではありません。 好き勝手なと言うと、語弊がありますが、ある程度のタイミングでシリアライズします。 それによって、使用されるメモリの量を抑える様になっています。 これが、適切に動作するか否かは、状況依存なので、 決定的な事は何とも言えないのですが、ポイントは、一つだけ。 HttpSessionにオブジェクトが大量にぶら下っていると、 シリ
Webアプリケーションを実装するにあたり、複数の画面を遷移してひとつの取引(トランザクション)を行うケースは非常に多く見られます。ECサイト上での取引を例に取ると、図1のような流れが一般的ではないでしょうか。 ここで言われる取引(トランザクション)は、ECサイトというサイトの特性におけるビジネスロジック上のトランザクションであって、HTTPというプロトコル上ではひとつの画面を遷移する毎に最低一回のトランザクションが発生します。 画面遷移毎に利用者から送りつけられる要求が複数回におよぶということは、HTTPトランザクションが複数回発生するということです。この場合、Webアプリケーション側では、一番最初に「商品をカートに入れる」ところから始まり「取引完了」までの間、リクエストを送ってくる"主"を何としてでも特定しなければ、他人がカートに放り込んだ商品が自分の手元に送付されてしまうような状況を招
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く