JVMパラメータ (メモリの話)
Tomcatの設定が必要とのことで、JVMについて調べてみた。
TomcatにJVMパラメータを設定するまでの道のりを記載する。
(WLSでも同様の検討で足りるはず。
この記事の概要
メモリについて簡単に分類する。
Tomcat(またはWebLogic)にJVMパラメータを設定する。
メモリについての初歩的な知識
そもそもOSのメモリってといったところはすっ飛ばす。
JAVAのメモリの話。
C言語だと、メモリの解放はプログラミングで明示的に制御するけど、
Javaだとガベージコレクション(GC)という機能があるから制御しない。
(制御できないのか、制御しないのかその辺りは不明)
ここからグーグル先生から教わった内容
javaのメモリに関する分類
・ヒープ
┗ New領域:
Eden領域:新しいオブジェクトを格納する領域
From (To) 領域:Eden領域が一杯になったときに〜GCによって使用中の
オブジェクトが格納される領域
┗ Old領域:Newがいっぱいになったときに〜GCによって格納される領域
┗ Permanent領域:永続的に利用される領域(class構造など)
・Cヒープ?
・スレッドスタック:ローカル変数など
サイズを簡単に見積もる
ヒープ全体は、OS全体のメモリからOSやその他のアプリが使うメモリ+αを差し引けば良い。(OSメモリの半分にしてみる。)
Permanent領域は、classやらjarやらTomcatやWLSのインストール配下の
ディレクトリ内を漁ればわかる。(256mあれば十分?)
あとは決めなければ行けないのは、
Newどれくらい? Edenどれくらい? てこと。
ヒープ − Permanent領域= New領域+Old領域 = Eden+From(To)+Old領域
JVMのGCにおける動き
- Newする→Edenに入る。
- Edenが一杯になる→〜GCにより、使用中のオブジェクトはFromに入る。Edenは空になる。
- Newする。→Edenに入る。
- Edenが一杯になる→〜GCにより、使用中のオブジェクトはToに入る。Fromに入ってたやつもToに入る。
- 1.~4.を繰り返して、FromかToが一杯になる→〜GCによりFrom(To)のオブジェクトはOld領域に入る。
- 1.~5.を繰り返してOld領域が一杯になる→Full GC により、ヒープ全体で使ってないものを大掃除する。(→これは、サービス提供時間になるべくやりたくない)
という感じ。Full GCは明示的に起こすこともできるので、毎日深夜にってこともできるらしい。
TomcatでJVMパラメータを設定する。
startup.bat中に呼び出されるcatalina.bat内の最初にCATALINA_OPTSにJVMパラメータを設定する。
JAVA_OPTSでも良いが、起動時も停止時もデバックモード起動時もそのオプションが有効になってしまうので注意が必要。
起動中のみの設定であれば、catalina_optsに設定
weblogic でJVMパラメータを設定する。
これもTomcatと同じで、startup.sh,startup.bat中に呼び出されるスクリプト中に
WLS_OPTSっぽいものがあったはず。
JAVA_OPTSでもいいけど。。。
指定の仕方は他のブログに情報があるので見てみてください。
-xmx -xss maxPermsizeとかそんな綴りです。
はてなブログで何書く?
stopWebLogic.cmd で止まらない問題。
WLSの停止コマンドが聞かなくなった。
ERROR: transport error 202: bind failed: Address already in use
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized
調べるとポートが閉まってる or ~
http://stackoverflow.com/questions/9877041/oracle-weblogic-server-is-stopped-and-yet-i-cant-start-it-in-eclipse
原因は、setDomainEnvのJAVA_OPTIONSにてデバッガのポート番号を指定しており、
start stopの両方でsetDomainEnvが呼ばれていたため、ポートが競合してしまっていた。
↓
デバッガポートを指定するJAVA_OPTIONSをstartWebLogic.cmdに移したところうまくいった。
情報のソース、どこにしよう?
ちょっと古いけど。(ipadの使い方)
最近見つけた
いろいろ。使えそうなところを今後追記する。
ハートビーツさん、ほんとにありがたい。馬場さんの書籍は、
Webエンジニアが知っておきたいインフラの基本 ~インフラの設計から構成、監視、チューニングまで~
- 作者: 馬場俊彰
- 出版社/メーカー: マイナビ
- 発売日: 2014/12/27
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (5件) を見る
をつまみ食いして読んだ。子鹿はすこし「それってどういうこと?」「体系的に話してほしい!」とは思ったけど、15時間は為になってる。
↓これの参考文献にハートビーツさん関連が多かった。
ソフトウェアエンジニアのための ITインフラ監視[実践]入門 (Software Design plus)
- 作者: 斎藤祐一郎
- 出版社/メーカー: 技術評論社
- 発売日: 2016/01/16
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
恐るべし。
書籍:厳選フレームワーク20
ブックカフェにて。
フレームワークを仕事に取り入れると効率的だったり、わかりやすかったり、漏れがなかったりすると感じるので↓をさらっと読んでみた。
マジビジプロ ハンディ版 新人コンサルタントが最初に学ぶ 厳選フレームワーク20 (マジビジプロハンディ版)
- 作者: 株式会社フィールドマネージメント,並木裕太
- 出版社/メーカー: ディスカヴァー・トゥエンティワン
- 発売日: 2016/02/20
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
一つだけ紹介。
※あくまで個人的な理解で書いてます。
RACI・・・役割を明らかにするフレームワーク
実行責任者、説明責任者、協力者、報告先。
実行者:作業やる人
説明者:作業結果を報告先に報告する人
協力者:情報を提供する人。
報告先:この人たちが説明に納得すると作業完了。
ーーーーーーーーー
過去PJで一緒になった外資コンサルが使っていたRACIというフレームワークを思い出したのでもう一度おさらいしてみた。
ほかにもいろいろ参考になった。古本で買おうかな。1300円をケチりたい。
PJでは、WBSを引く際に使っていた。
RACI教えてくれたあの人名前なんだっけな。
モチベーション低かったけど、なんかかっこ良かったな。
いろいろやりたいけど、とりあえず今日やりたいことを書いてみる。。。
2016/4/5 今日の目標。
■Gmailのゴミをフィルタリング 30分
本当にイライラする。
■Qiita登録 15分 完了
最近学んだことをまとめたい。
特にvirtual box周り。きっとアプリ開発者にとって良いものになるはず。
ま、PaaSには叶わんけど、クラウドと違ってハードウェアを自分のコントロール下
におけることがいいことだと思う。
→とりあえず投稿は後。この↓アプリなんだ?
■読書ブログはここでいいや。45分
今、津田沼のブックカフェ↓↓↓
ちょっとこの本を読んでみる。
マジビジプロ ハンディ版 新人コンサルタントが最初に学ぶ 厳選フレームワーク20 (マジビジプロハンディ版)
- 作者: 株式会社フィールドマネージメント,並木裕太
- 出版社/メーカー: ディスカヴァー・トゥエンティワン
- 発売日: 2016/02/20
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
目的は、フレームワークの基本を頭に入れておくこと。
コンサル系はマーケティングが念頭にあるけど、システム屋として利用できるように話を置き換えてこのブログにまとめる。
■macbook airにonenoteをインストール 10分
たしかタダだったはず。
→Mac OS X 10.10が必要だった!OSのアップデートは抵抗感強いので、ちょっと保留
小銭を稼ぎたい!!
→登録したら、アソシエイトの使い方↓に遷移された。後で読もう!
Amazonアソシエイト(アフィリエイト)プログラムに参加しよう! - クイックツアー
■AWSのパスワードを変更 5分 完了
→パスワードをいつもの+ハロー的なやつに変更。かなり強力だが忘れたらアウト
Lineのノートに書いておこう。4/5投稿分
合計135分。目標120分 19時まで。ツレが家に来るからそれまでに片付ける。
と思ったら18時過ぎにくるらしい。以外とはやかった。厳選フレームワークをさらっと読もう。
やりたいこと。
やりたいことがいっぱいあるので、とりあえず羅列してみる。
システムに関して
・LPIC→今年中にレベル3取得→童顔だから、せめて履歴書だけは重厚感がほしい。
・Docker使ってみたい。仮想とどれだけ違うのか気になる。ハイパーバイザー型と違いOSのリソースを共有すということ。
目的は個人利用
・AWS基本的なところは学んだから、OSのテンプレート AMIを作りたい。
ヤバい→すぐに検証→新規インスタンス作成みたいなやつ。セキュリティ万全の。
・仮想の知識も体系的に学ばねば。
・ネットワークも何となくから抜け出したい。
・シェルスクリプトももっと早くかけるようになろう。
いくつかテンプレートを作りたい。MW起動・停止、バックアップ、引き渡し時のOSのスペック確認。。。さすがにServerSpecのサーバと接続して確認させてくださいは辛いもんね。
入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界
- 作者: ブルース・ブリン,Bruce Blinn,山下哲典
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2003/02
- メディア: 単行本
- 購入: 18人 クリック: 331回
- この商品を含むブログ (62件) を見る
・アプリもできたらいいよね。Javaはもっと深く。
個人的興味はWebだからPHPかPealかな。JavaScriptもやりたい。Ajax.
・要件定義全般の知識を持ちたいな。監視とは。バックアップどうする。
リストア、リカバリどう考える? OSイメージ DBFファイルのバックアップ ディレクトリ丸ごとバックアップ。。。
とりあえず会社にあった下記を借りパクしたい。
ソフトウェアエンジニアのための ITインフラ監視[実践]入門 (Software Design plus)
- 作者: 斎藤祐一郎
- 出版社/メーカー: 技術評論社
- 発売日: 2016/01/16
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
・セキュリティ施策もまとめたい。ネットワーク、OSレベル、MWレベル、アプリ(プログラムレベル)。。。
教養として
・コンサル的な知識はデータサイエンティスト的な知識があったらいいな。
ものの見方。大量データを視覚化してちゃんと考察できるといいな。
tableau試してみたい。
・基本的なフレームワークは覚えよう。何か新しいことに直面した際に図解するテクニックが必要。自分の理解する助けにもなる。
・もう一度ORを再入門したい。
仕事の仕方
タスク管理はだいぶ良くなった。
アウトプットの早さと情報整理法を整理したい。
インプットの取得先いろいろ整理したいな。
手帳の使い道を整理したい。
アウトプット先を複数もちたい(twitter,facebook,Qiita,はてな、SlideShare。。。書評を集めたサイトがどっかにあったはず。)
作業場所
家はイケてないので、ネットワークの速度を必要としない場合はスターバックスさんにお世話になろう。→お店を選定したい。