SlideShare a Scribd company logo
株式会社FLECT
小西俊司


小西俊司(@shunjikonishi)
◦ 株式会社FLECTの1人R&D
◦ ライブラリ開発や技術調査が生業
◦ 技術調査はかなりHerokuに傾けている



Blog

◦ http://blog.flect.co.jp/labo/
◦ 多分日本で一番Heroku関連の記事が多いブログ



http://oss.flect.co.jp/

◦ 社内要件から派生したライブラリやアプリを公開
◦ アプリはすべてGitHubからcloneしてHeroku上で動か
すことができます。



重箱の隅をつつく、の意
割と細かいことが気になる質なので、ちょいちょ
いやっている細かい実験結果の拾い集め。



ここでの検証結果はあくまで推測でしかない
ドキュメントにない内容はいつ仕様変更になるか
わからないので、将来も同じ結果になるとは限ら
ない



ほとんどは知っていても役に立たない





ドキュメントには実行時間の長い処理の場合は
Workerを使え、とある
実行時間の長い処理ってどの程度よ?




10分間隔のスケジュールであれば10分、デイ
リーのスケジュールであれば24時間を目安に
SIGTERMが飛んでくる
ただし二重起動が防止されているわけではないの
で、同時に複数のスケジューラプロセスが実行さ
れることはあり得る
◦ 実験ではデイリーのスケジュールは25時間近く動いてい
た




長い処理を実行しているなら外から止めたいこ
とってあるよね
実験では無限ループ処理を実行していたので、止
められないと困る
◦ Dyno時間を消費するし
curl -X DELETE
-H "Accept: application/vnd.heroku+json; version=3"
-u <USERNAME>:<APIKEY>
https://api.heroku.com/apps/<APPNAME>/dynos/scheduler.xxxx




herokuコマンド(ps:stop)では止められない
git pushやheroku config:setでも止まらない
◦ この場合は止めて欲しいけどな。。。(--




複数Dynoある場合はNewRelicで見られるのは平
均値
「heroku run bash」で入ってpsやtopを叩いて
もそのDynoは実行中のWebDynoとは異なるイン
スタンス
heroku labs:enable log-runtime-metrics






各Dynoで20秒に一回メモリ使用量がログ出力される
ようになる
拙作
http://flect-papertrail.herokuapp.com/
を使用すればリアルタイムでグラフ化することも可能
メモリ使用量は概ね「ps aux」の結果と同じ
Javaアプリの場合Runtimeから取れるメモリ使用量よ
りも小さい数字になることがある
◦ 誰か説明してください。。。


PapertrailとかTreasureDataとか
curl -H "Accept: application/vnd.heroku+json; version=3"
-u <USERNAME>:<APIKEY>
https://api.heroku.com/apps/<APPNAME>/log-drains
heroku drains:add <URL>



PlatformAPIでAddonのSyslogURLが取れるので
それをheroku drains:addする
◦ 多分Addon側からはログを流してきたアプリが実際には
なんであるかは区別できない



しかし本当にやって良いかどうかは別問題
◦ Treasure Dataさんに聞いてみると良いかも


アクセスログくらいはでるのかな?
Jan 15 18:59:51 flect-ws-chat heroku/router: at=info
method=GET path=/room/chat?room=Room1&username=chrome
host=flect-ws-chat.herokuapp.com fwd=“xxx.xxx.xxx.xxx"
dyno=web.1 connect=1ms service=77698ms status=101
bytes=973



WebSocket接続が確立して切断された時に一度だけ出力

◦ statusは最初のWebSocketへの切り替えの応答コードなので101。
なのでmethodもGET
◦ serviceはWebSocketの接続時間なので他のアクセスログに比べ
て極端に大きな数字になる
◦ bytesはサーバからの全送信データのサイズ(多分)



WebSocketのログであることがわかる手掛かりはstatusし
かない

More Related Content

PDF
Agile Inspection Workshop
PDF
テストコードをアプリケーションコードと同じ階層に置きたい
PDF
CodeZineAcademy TDD実践講座PR資料
PDF
MathLibre の紹介
PDF
一番簡単なWebSocketの試し方
PPTX
4th tokushimaapp
PDF
HTML5でOpen Dataをやってみた
PDF
Perlで初めてWebアプリを作った話
Agile Inspection Workshop
テストコードをアプリケーションコードと同じ階層に置きたい
CodeZineAcademy TDD実践講座PR資料
MathLibre の紹介
一番簡単なWebSocketの試し方
4th tokushimaapp
HTML5でOpen Dataをやってみた
Perlで初めてWebアプリを作った話

Similar to Heroku tips1 (20)

PDF
H2O and php
PDF
Hatena blogdevelopmentflow
PDF
Devとopsをつなぐchat ops
PPT
14対話bot発表資料
PDF
Firefox OS 起動の仕組みを調べてみた
PDF
2018 07-23
PDF
今時のオンプレなgithubクローン環境構築
PDF
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
PDF
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業
PDF
PTLのお仕事とリリースパイプラインの裏側
PDF
やはり日本の技術基準適合証明はまちがっている?
PDF
DartPad+CodePenで、Flutterを体験してみよう
PDF
JavaScriptで ごく普通にhttp通信をする 〜esp8266+espruinoでhttp getリクエストをするテスト〜
PDF
ビギナーがUNIQLOCKもどきを作ってみた
PPTX
オープンセミナー香川2012 LT
PDF
PyCon APAC 2013 Web Secure Coding
PPTX
Aizu.LT::Tokyo #2
PPTX
著者記号管理システムの開発 - Code4Lib JAPAN Conference 2024 -
PPTX
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
KEY
Yapc2012資料
H2O and php
Hatena blogdevelopmentflow
Devとopsをつなぐchat ops
14対話bot発表資料
Firefox OS 起動の仕組みを調べてみた
2018 07-23
今時のオンプレなgithubクローン環境構築
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業
PTLのお仕事とリリースパイプラインの裏側
やはり日本の技術基準適合証明はまちがっている?
DartPad+CodePenで、Flutterを体験してみよう
JavaScriptで ごく普通にhttp通信をする 〜esp8266+espruinoでhttp getリクエストをするテスト〜
ビギナーがUNIQLOCKもどきを作ってみた
オープンセミナー香川2012 LT
PyCon APAC 2013 Web Secure Coding
Aizu.LT::Tokyo #2
著者記号管理システムの開発 - Code4Lib JAPAN Conference 2024 -
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
Yapc2012資料
Ad

More from Shunji Konishi (20)

PDF
Salesforceのハッカソンに参加した話
PDF
Salesforce連携のためのOData入門
PDF
プロキシーを使ってテストを楽にする
PDF
Javascriptのあれやこれやをまとめて説明してみる
PDF
MochaとChaiでやるJavaScriptテスト
PPTX
SendGridサンプルの紹介
PDF
セキュリティの考え方
PDF
WebSocketでリアルタイムクイズアプリを作ってみた
PDF
良質なコードを高速に書くコツ
PDF
Playframework1でSeleniumテスト
PPTX
Heroku Dyno再起動時の振る舞い
PPTX
Dyno cycling behavior of Heroku
PPTX
Herokuで使えるRDBMS管理者ツール
PPTX
Play1 to Play2
PDF
お手軽Ajaxアプリケーションの作り方
PPTX
Herokuのログ解析ツール
PPTX
Excel2 canvas
PDF
特盛!Heroku
PPTX
文字コードのお話
PPTX
High traffic questionnaire site
Salesforceのハッカソンに参加した話
Salesforce連携のためのOData入門
プロキシーを使ってテストを楽にする
Javascriptのあれやこれやをまとめて説明してみる
MochaとChaiでやるJavaScriptテスト
SendGridサンプルの紹介
セキュリティの考え方
WebSocketでリアルタイムクイズアプリを作ってみた
良質なコードを高速に書くコツ
Playframework1でSeleniumテスト
Heroku Dyno再起動時の振る舞い
Dyno cycling behavior of Heroku
Herokuで使えるRDBMS管理者ツール
Play1 to Play2
お手軽Ajaxアプリケーションの作り方
Herokuのログ解析ツール
Excel2 canvas
特盛!Heroku
文字コードのお話
High traffic questionnaire site
Ad

Heroku tips1