JVMアプリケーションを運用する際のメジャーどころチューニングポイントメモ
JVMにチューニング項目は多々あれど、プロダクションで運用する際に予めおさえておきたい項目をまとめてみるエントリです。*1 勿論、OSもJVMもデフォルトである程度のパフォーマンスは発揮でき、計測を伴わないチューニングは悪手であることはよく知られています。 しかし、設定しておかないとパフォーマンスにそのまま影響すると分かるものを調べないのは裸で戦場に赴くようなものです。*2 どんな項目をどう変更すれば良いのか知っていることは重要な武器なのです。
なぜ調べるのか
今回、チューニングポイントを調べるにあたって、私のモチベーションはどこにあるのかを考えると、以下の要件を満たしたいということがあげられます。
- アプリケーションとして求められる品質水準として動作する → 性能目標
- 異常時に事象を追うことができる
ここでいう品質水準・異常とは、パフォーマンスが明らかに低い、アプリケーションがクラッシュする、などの(JVM・アプリケーション双方の)期待しない振る舞いを指します。
性能目標
やみくもにチューニングしても終わりがなく、何をチューニングすれば良いかも判断しづらいものです。 性能目標を定めることで、このラインをクリアし続けることを目指す方が健全です。 例えば以下のような項目があげられるかと思います。
TL;DR
だいたいのことはJavaパフォーマンスに書いてあるので、これを読もう。
続きを読むMySQL ResultSetのStreamingとCursorの違い
MySQL Connector/J version 8.0の変更点を見ていたら、Configurationsの説明が5.1の時よりも増えていることを見つけました。 その中で、ようやくStreamingとCursorの違いが分かった気がした*1ので備忘メモです。
*1:気がした
ScalikeJDBC streamsモジュールの使い方解説
ScalikeJDBCをReactive Streamsに対応させる記事を公開してから、ScalikeJDBC公式にモジュールが取り込まれる*1こととなり、ついに本日バージョン3.0がリリースされました!
この scalikejdbc-streams モジュールの使い方を解説するエントリです。
続きを読む効果的な目標の立て方について整理したこと
期ごとに目標を設定して、期末にその評価をする、などは姿形は違えど多くの会社で行われていることと思います。 何を狙ってそんな取り組みをしているのか、もっと効果的に取り組むためには何が必要なのかなど、ココ最近調べたり考えたりしたことをまとめてみたのでシェアしてみるエントリです。
続きを読むSwagger(OpenAPI) Specification 2.0におけるOptionalなプロパティに値が無い場合の仕様を調べた話
Swagger(OpenAPI) Specification 2.0(以下、OAS)を最近触り始めているのですが、Optionalなプロパティに値が無いときのJSONは何が許されるのかを調べたエントリです。
JSON Schema Specificationの requiredキーワード
と type: null
について確認しました。
OAS2.0ではModelはSchema Objectとして定義されており、これは JSON Schema Specification Draft 4 となっています。
OASでは、Schema Objectのrequiredキーワードおよびnullについて特に言及はありません。
そのため、JSON Schemaの仕様*1に準拠すると解釈し、これを調査しました。*2
*1:本エントリではJSON Schema Specification Draft 4を対象にしています。