JavaScriptのCPU問題箇所特定ツール:sjsp

はてなの中の人が、Mackerelのフロントエンドの性能チューニングのために作成したsjspが、サーバレスアーキテクチャによる時系列データベースの構築と監視 / Serverlessconf Tokyo 2017dで紹介されていました。

sjspにトランスパイルするだけでCPU boundな処理がわかるそうな。

sjspについては、「シンプルでかつ最高のJavaScriptプロファイラ sjsp を作りました! ― Webアプリケーションが複雑化する中でプロファイラに求められるものとは何か」で説明されています。

こんな感じの結果が出るなんて素晴らしい!

========== SORT BY TIME ==========
time: 30.20sec   count:  71      test6  test.js  (line: 31, col: 18)  function test6() {
time: 16.47sec   count:  41      test7  test.js  (line: 37, col: 18)  function test7() {
time: 15.49sec   count: 133      test4  test.js  (line: 19, col: 18)  function test4() {
time:  5.98sec   count: 216      test1  test.js  (line:  1, col: 18)  function test1() {
time:  4.37sec   count:  18      test5  test.js  (line: 25, col: 18)  function test5() {
time:  3.24sec   count: 512      test3  test.js  (line: 13, col: 18)  function test3() {
time:  0.87sec   count:  67  anonymous  test.js  (line: 49, col: 24)  setInterval(function() {
time:  0.80sec   count:   2      test2  test.js  (line:  7, col: 18)  function test2() {
time:  0.44sec   count:   2  anonymous  test.js  (line: 43, col: 23)  setTimeout(function() {
========== SORT BY COUNT ==========
time:  3.24sec   count: 512      test3  test.js  (line: 13, col: 18)  function test3() {
time:  5.98sec   count: 216      test1  test.js  (line:  1, col: 18)  function test1() {
time: 15.49sec   count: 133      test4  test.js  (line: 19, col: 18)  function test4() {
time: 30.20sec   count:  71      test6  test.js  (line: 31, col: 18)  function test6() {

APIの開発サイクルを早めるサービス:apiary

APIを使用した開発をする場合、APIのインターフェイスを定義する。

  1. その定義にそってAPI開発チームが開発。
  2. フロントアプリの開発チームも定義に沿ってアプリを開発。

と言うことで、2ライン走ることになる。
APIが完了するまでは、疑似コードを書くとか、JSONを定数で持たせるとか、そんな感じで開発をすることが多いのだけど、apiaryを使用すると少し楽にしてくれる。

続きを読む “APIの開発サイクルを早めるサービス:apiary” >

Chrome拡張機能:Toby

Toby は、Chromeのエクステンションです。

エクステンションを追加すると、タブを管理するためのアドオンが追加されます。
右端に開いているタブ一覧が表示され、それを左側にD&Dするとタブが削除されて一覧に保存されます。

開きすぎた未読タブを一括管理するためのエクステンションです。

mackerelを使ってみたメモ

いろいろ触り始めて、いろいろ調べたりして時間を割いたので備忘録としてメモ。

mackerel公式プラグインのインストール(CentOS)

curl -fsSL https://mackerel.io/assets/files/scripts/setup-yum.sh | sh
sudo yum install -y mackerel-agent

インストールして、

/etc/mackerel-agent/mackerel-agent.conf

を修正してリスタート。

/etc/init.d/mackerel-agent restart

NGINXプラグインが悲しい

会社の環境では、Nginxをリバースプロキシとして使用しているので、重要なのはUpstreamの値。

でも、NGINX PLUSじゃないと、NGINXのUpstreamの値が取れない。なので、公式プラグインで取得している値は、コネクション数とアクティブセッションと、Read、Writeだけ。

プロキシとしてしか使っていないので全く優位なデータはNginxプラグインからは取れない。

Windows でmackerel公式プラグインを使用する方法

公式プラグインをWindowsでも使おう!と思ったら意外と大変だったて話。

まず公式インストール方法にWindows向けの案内が無いけど、ようは.goをWindows向けにexeへビルドすればOK。ビルドするには、「MackerelでWindowsイベントログ監視とプロセス監視をする」で紹介されているのがすごく参考になった。

Windowsでgo環境の整備

参照:Getting Started

  1. Windows用バイナリをダウンロードし、解凍する
  2. 環境変数を設定する
    GOROOT:C:\Go
    PATH:C:\Go\bin
    GOPATH:C:\GOPATH

Windowsでgoをビルドする

mackerel-agent-pluginsをビルドするために、先に不足している分を取得しておく。

git clone https://github.com/mackerelio/mackerel-agent-plugins.git
cd mackerel-plugin-fluentd
go build -o mackerel-plugin-fluentd_windows.exe

C:\Program Files (x86)\Mackerel\mackerel-agent\mackerel-agent.confを修正する。

[plugin.metrics.fluentd]
command = “C:\\Program Files (x86)\\Mackerel\\mackerel-agent\\mackerel-plugin-fluentd_windows.exe”

mackerelのログ

Windows のイベントログに出ているのでサービス起動しても起動せず止まっちゃう場合はイベントログを見ると原因がわかる。

(例)

failed to load config: Failed to load the config file: Near line 24 (last key parsed ‘plugin.metrics.fluentd.command’): Invalid escape character ‘P’. Only the following escape characters are allowed: \b, \t, \n, \f, \r, \”, \/, \\, \uXXXX and \UXXXXXXXX.

image

mackerel-plugin-fluentd

勘違いしちゃったのだけど、fluentdそのものの稼働状況を確認するためのプラグイン。てっきり、fluentdの値送信と思ったけど、違って、fluentdのプロセス監視用プラグインだった。

http://localhost:24220/api/plugins.json の結果を取得して送信するためのプラグイン。

image

fluentdからmackerelに送信するために使用するのは、https://mackerel.io/ja/docs/entry/advanced/fluentdを参照。

SQLIO が終焉

SQL Server のストレージ性能テスト(IOPS測定)ツールとして有名だった SQLIO ですが、Microsoftは提供を終了させ、ダウンロードできないようなりました。

今後は、 dskpad を使用して、SQL Server 用のストレージ性能テストをすることをMicrosoftは推奨しているようです。