Jpsonicの起動オプションに関する注意点です。
一般的な起動引数
これらは指定が無くても動作が可能ですが、最大ヒープサイズは指定する方が無難かもしれません。
最大ヒープサイズ
これはアプリの起動引数ではなくJavaコマンドです。平たく言えばサーバが使用可能な最大メモリを指定します。
Subsonicには最大ヒープサイズに関して明確な推奨値というものはありませんが、サンプルは256mbで記述されることが多かったように思えます。Airsonicは同様に512mbでアナウンスされています。これは倍のメモリを使用するようになったというわけではなく、Subsonicが32bit時代のプロダクト、Airsonicで64bit時代に移行したという違いがあるためです。
Jpsonicは機能が増えていますが、コードの改善やライブラリアップデート(サードパティライブリが省メモリの改善を行う場合がある)といった対策も行われています。そのため使用メモリはSubsonic/Airsonicと同程度かそれ以下に抑えられています。10万曲程度であれば「-Xmx512m」を追加すれば問題ありません。
引数名称 | 使用例 |
---|---|
-Xmx | -Xmx512m |
ログレベル
v111.6.0 以降、JpsonicのログレベルはWARNがデフォルトになっています。Subsonic/Airsonic風のログが欲しい場合、INFOを指定してください。以下のログレベルが使用可能ですが、ログの分量が増えるほどサーバのパフォーマンスは低下します。
- ERROR 例外発生時のみ
- WARN 警告メッセージは出力される。画像がない、フォーマットが不正、等
- INFO 比較的冗長なアプリケーションログ
- DEBUG 詳細なログ。起動時のLiquibaseのログ等も出力される
- TRACE ほとんど全てのログが出力される
引数名称 | 使用例 |
---|---|
logging.level.com.tesshu.jpsonic | -Dlogging.level.com.tesshu.jpsonic=INFO |
追加の起動引数
Jpsonicは一部の起動オプションの仕様がAirsonicとは異なるため解説します。これらは必須ではなく、必要に応じて追加するオプションです。
Airsonic | Jpsonic |
---|---|
airsonic.home | jpsonic.home |
airsonic.defaultMusicFolder | jpsonic.defaultMusicFolder |
airsonic.defaultPodcastFolder | jpsonic.defaultPodcastFolder |
airsonic.defaultPlaylistFolder | jpsonic.defaultPlaylistFolder |
引数名称 | 使用例 |
---|---|
UPNP_PORT | -DUPNP_PORT=4041 |
引数名称 | バージョン | 使用例 |
---|---|---|
server.context-path | 109.0.0 より前 | -Dserver.context-path=/subsonic |
servlet.contextPath | 109.0.0 から | -Dservlet.contextPath=/subsonic |
引数名称 | 使用例 |
---|---|
jpsonic.scan.onboot | -Djpsonic.scan.onboot=true |
引数名称 | 使用例(機器やソフトウェアにより変わります) |
---|---|
jpsonic.mime.dsf | -Djpsonic.mime.dsf=application/octet-stream |
-Djpsonic.mime.dsf=audio/dsd | |
-Djpsonic.mime.dsf=audio/dsf | |
-Djpsonic.mime.dsf=audio/x-dsf | |
jpsonic.mime.dff | -Djpsonic.mime.dff=application/octet-stream |
-Djpsonic.mime.dff=audio/dsd | |
-Djpsonic.mime.dff=audio/dff | |
-Djpsonic.mime.dff=audio/x-dff |
引数名称 | 使用例 |
---|---|
jpsonic.embeddedfont | -Djpsonic.embeddedfont=true |
Tomcatコンテナ配備時の注意点
Tomcatに配備をしていて演奏中に音飛びがする場合 server.xml のConnectorタグをご確認ください。connectionTimeoutの値を大きくすることで解決する場合があります。
1 2 3 |
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="300000" redirectPort="8443" /> |
Subsonicが登場したWebアプリケーション黎明期と比較すると、現在ではどのサーバもHTTP関連のいくつかのプロパティのデフォルト値は小さめに設定されています。(デフォルトでデータの大量送信などの攻撃を受けつけにくいようにするため) そのためアプリケーションの要件によっては調整が必要になります。組み込みJettyによる単体起動の場合は設定の必要がありません。
グレースフルシャットダウン
v110.0.0以降、グレースフルシャットダウンが導入されました。ターミナル実行時のCtl+CやTomcatのcatalina stopのような正常終了の場合、段階的なリソース解放を行います。
従来のサーバにはシャットダウンに異常終了と正常終了の区別がありませんが、Jpsonicは正常終了時には安全なリソース解放を行います。Tomcatの場合、リクエスト強制終了の際にログにメモリリークを示唆する警告が記録されることがありますが、擬陽性であり問題ありません。
更新履歴
何か機能更新をしてこの記事を書き換えたときに以下に追記します。
- v111.6.0
- 一般的な起動引数を追加。最大ヒープサイズとログレベルについて記載
- v111.4.0
- カバーアートの生成に埋め込みフォントを使用するオプションを追加
- v111.1.0
- DSDのMIMEオプションを追記
- v110.0.0
- Tomcat使用時の注意点を追記
- グレースフルシャットダウンの項目を追記
- v109.0.0
- コンテキストパスの仕様が変更されたため「バージョンにより異なる引数」を追記
コメントはまだありません