2017-01-01から1年間の記事一覧
なぜかEclipseのMATが手元のMacでうまく動作しないので同様の機能があるIBMのHeapAnalyzerを使う。 IBM HeapAnalyzer 下段の"Download HeapAnalyzer"からダウンロードできる。 2017年12月時点での最新のバージョンは4.5.6。 実行するには java -Xmx12G -jar …
GKEで走るScalaアプリのチューニングをjvisualvmでやったので手法をあとで振り返れるようにメモしておく。 要件としては、所与のマシンスペック・台数の範囲内で、スループットを最大化したいというもの。 さらに、RTBなので、安定した高速なレスポンス速度…
トランザクションまわりの挙動を調べるため。デバッグ用途なので、プロダクションで動かす想定は不要。 Logging | Django documentation | Django https://docs.djangoproject.com/en/1.8/topics/logging/ Django ORM の SQL を出力する方法まとめ - akiyoko…
今回のケースでいうと、Kubernetes内のPodにローカルからJMXにつないでjvisualvmを使ってチューニングすることが多かったのだが、下記の記事でやったように127.0.0.1のホスト指定が使えないケースが出てきてしまった。 road288.hatenablog.com -Djava.rmi.se…
stackoverflow.com 基本的にはここの通り。 Kubernetesの中で動くPodにJMXでつないで様子をみたいときがある。 そういうときは、まずPod名を調べて、kubectlコマンドでポートフォーワードして、jvisualvmなどのコマンドを使えばOK。 例えばJMXが7000番ポート…
状態遷移の記録をしたいとき、例えばこういうリストがあるときに @ val l = List(List(1, 2, 3, 4, 5), List(3, 4, 5), List(5)) 5個あった要素が、3個になり、1個になった、という遷移を、 2番目の処理で1と2が落ち、 3番目の処理で3と4が落ちた というよう…
nginxをフロントにおいて、バックエンド(upstream)にリバースプロキシするというのはよくあるけど、nginx - upstreamでkeepaliveさせるには設定がいる。数年前にやっていたのに忘れていたのでメモ。 公式のドキュメントはこちら。 Module ngx_http_upstream…
debianを使う。 pythonでmysqlを使うのに必要というので、 $ sudo apt-get install libmysqlclient-dev Reading package lists... Done Building dependency tree Reading state information... Done Package libmysqlclient-dev is not available, but is r…
何らかのAPM(Application Performance Management)ツールを入れたい。以前はNew Relicを使っていたことがあるけど、サーバー(というかCPU)の数に応じて費用がどんどん高騰していくし、かといって以前やっていたように複数台のうちの1台に入れる、というの…
podがいくら待っても消えてくれないとき。 stackoverflow.com --force --grace-period=0をつける。 例: ᐅ kubectl get pods NAME READY STATUS RESTARTS AGE foo-deployment-2799137922-7xc7r 2/2 Running 0 27d bar-deployment-2705092949-mmkf1 3/3 Termi…
http4s: HTTP Client にあるとおり。 build.sbt scalaVersion := "2.12.4" val http4sVersion = "0.17.5" libraryDependencies ++= Seq( "org.http4s" %% "http4s-dsl" % http4sVersion, "org.http4s" %% "http4s-blaze-server" % http4sVersion, "org.http4…
前回の続き。 曲がりくねった方法をとってしまったが、java.util.loggingの仕様を順に追って検討すればできた。 java.util.loggingのログの出力の設定は、 java.util.logging.config.class のシステムプロパティの定義があればそれを参照 java.util.logging.…
java.util.loggingのログが出力されてStackdriver上でERRORログ扱いになってしまう(結果、ERRORレベルのログの中で重要度の高いログが埋もれてしまう)ことに対処したいと思っている。 今回のケースだと下記のライブラリが該当する。 GitHub - GoogleCloudPla…
stackoverflow.com とりあえず雑に val es: ExecutorService = Executors.newFixedThreadPool(1000) implicit val executionContext: ExecutionContext = ExecutionContext.fromExecutorService(es) とやってみたが、どれだけスレッド数使うのか計測しないと…
MacのIntellijでJavaを実行すると出てきてた警告メッセージ。 objc[8427]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_141.jdk/Contents/Home/bin/java (0x109de34c0) and /Library/Java/JavaVirtualMachin…
codezine.jp 読んでもよくわからない。ただ、いまの自分の課題感に近い話題だということは分かる。テストコードを書いても、テストできている部分がごく一部である実感だから、テストを書いても安心できない。 後でもう一度読むとともに、関連することを調べ…
ロードバランサの疎通をさせるために、ヘルスチェックのURLパスを作ってそこで200を返す必要があるとき。 www.reddit.com すごくシンプルな方法があった。 urls.py urlpatterns = [ url(r"^", lambda r: HttpResponse()), (略) ] ビューはコールバック関数。…
GCPのCloud SQLへのつなぎ方にはいくつか方法があるが、Kubernetes内にあるpodから接続するにはアプリのコンテナと同一pod内にcloud_sql_proxyのコンテナを立ててつなぐ方法で設定した。 github.com 基本的にはここにあるテンプレートどおりやっていけば問題…
@ trait FooFilter { val filterName: String } defined trait FooFilter @ val a = new FooFilter{ override val filterName = this.getClass.getCanonicalName } a: AnyRef with FooFilter = ammonite.$sess.cmd1$$anon$1@3d904e9c @ a.filterName res2: S…
ソースコード github.com HDR Histogram(30P) hdrhistogram.org 一定のデータサイズでヒストグラムを表現できるデータ型?あとで調べる Java Flight Recorderについて(33P) docs.oracle.com 普段はvisualvmを使っているけど、別のことができたっけ・・・ Saf…
基本ぽいな。 Logback – Duplicate log messages java - How to avoid double logging with logback? - Stack Overflow logger要素でadditivityをfalseにする。 <logger name="data-logger" level="info" additivity="false"></logger>
クイックスタート。Druidのバージョンは0.10.1。 http://druid.io/docs/0.10.1/tutorials/quickstart.html Quickstartで注意点 Java8を使う メモリは8G以上必要 ホスト名が解決できないといけない(/etc/hostsに追加した) 8090ポート 8081ポート Supersetと…
プロジェクトで使いたい!的な機運が高まっているのでセットアップしてみることにする。 ちょっと動かしてみる程度ではなく、プロダクションサービスのデータ分析ツールとして導入に耐えるか、を検証するのがゴール。アーキテクチャを再現可能に構築できて、…
yak shavingが止まらない。 github.com Druid使おうと思ったらJava8でないと動かないので入れる。 www.server-world.info インストールはこれだけ。 sudo yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel alternativesコマンドで1.8を適用する…
基本ぽいけど考え込んでしまった。 stackoverflow.com Eitherな値でチェーンしているときに、LeftのときにもRightのときにも関数を適用したいという要件があった。 普通に考えれば次のようにすればいい。 scala> val x: Either[Int, Int] = Right(3) x: Eith…
いくつだろうと探していたらみつけた。 github.com CPUのコア+1だ。
kubernetes.io ここにある通りでできる。 pod名の取得を試してみた。 こんな感じで追加 ᐅ kubectl edit deploy foo-deployment deployment "foo-deployment" edited - name: MY_POD_NAME valueFrom: fieldRef: fieldPath: metadata.name 本来元のyamlを直し…
複数のGKEクラスタを切り替えて使っていると(特に開発・ステージング・本番など)、いま使っているcontextを混同してしまいがちで、ステージング環境で開発向けのコマンドを打ってしまったりとかしたのでzshのプロンプトに環境をわかりやすく出すようにした…
CUIでやろうとしたが方法が見つからず。ウェブコンソールでURLを表示してそれを叩くだけだった。
コンテナ内で動くスケジューラが一定時間で動かなくなるバグを追っていた。最初はスケジューラが止まってしまうのかと予想していたが、ブロックしてずっと待っていただけだった。 スレッドダンプをとったらわかった。 "scala-execution-context-global-1802"…