あだまる日記

とあるインフラエンジニアの日記です。皆さんのお役に立てるよう頑張ります。

JVMパラメータ (メモリの話)

Tomcatの設定が必要とのことで、JVMについて調べてみた。

TomcatJVMパラメータを設定するまでの道のりを記載する。

(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領域

 

JVMGCにおける動き

  1. Newする→Edenに入る。
  2. Edenが一杯になる→〜GCにより、使用中のオブジェクトはFromに入る。Edenは空になる。
  3. Newする。→Edenに入る。
  4. Edenが一杯になる→〜GCにより、使用中のオブジェクトはToに入る。Fromに入ってたやつもToに入る。
  5. 1.~4.を繰り返して、FromかToが一杯になる→〜GCによりFrom(To)のオブジェクトはOld領域に入る。
  6. 1.~5.を繰り返してOld領域が一杯になる→Full GC により、ヒープ全体で使ってないものを大掃除する。(→これは、サービス提供時間になるべくやりたくない)

という感じ。Full GCは明示的に起こすこともできるので、毎日深夜にってこともできるらしい。

 

TomcatJVMパラメータを設定する。

startup.bat中に呼び出されるcatalina.bat内の最初にCATALINA_OPTSにJVMパラメータを設定する。

JAVA_OPTSでも良いが、起動時も停止時もデバックモード起動時もそのオプションが有効になってしまうので注意が必要。

起動中のみの設定であれば、catalina_optsに設定

 

weblogicJVMパラメータを設定する。

これもTomcatと同じで、startup.sh,startup.bat中に呼び出されるスクリプト中に

WLS_OPTSっぽいものがあったはず。

JAVA_OPTSでもいいけど。。。

 

指定の仕方は他のブログに情報があるので見てみてください。

-xmx -xss maxPermsizeとかそんな綴りです。

 

はてなブログで何書く?

はてなブログ とりあえず書き書きしてますが、

カテゴリ分け※やら、階層構造、デザインなどいろいろとやりたい。

 

※カテゴリ分け=パンくずリスト らしい。

 

ので、ブログで書きたいことを頭の中を整理する。

 

■ブログで書きたいこと

①仕事で経験したことを書き残しておきたい。

②個人の学習で学んだことをアウトプットしたい。

③読書の備忘として。

 

①②は一緒にして問題なさそうあとはカテゴリ毎に分けたい。

 

■カテゴリ案

OS

M/W

application

仮想化ソフト

言語

ツール

  • エディタソフト
  • JConsole
  • SOAP UI
  • win SCP
  • ・・・

サービス

 

数学

 

 

 

 

 

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の使い方)

stocker.jp

 

最近見つけた

heartbeats.jp

 

あとはfeedlyRSS

いろいろ。使えそうなところを今後追記する。

ハートビーツさん、ほんとにありがたい。馬場さんの書籍は、

 

 

 

15時間でわかるCentOS集中講座

15時間でわかるCentOS集中講座

 

 をつまみ食いして読んだ。子鹿はすこし「それってどういうこと?」「体系的に話してほしい!」とは思ったけど、15時間は為になってる。

 

↓これの参考文献にハートビーツさん関連が多かった。

ソフトウェアエンジニアのための ITインフラ監視[実践]入門 (Software Design plus)

ソフトウェアエンジニアのための ITインフラ監視[実践]入門 (Software Design plus)

 

 

恐るべし。

 

 

書籍:厳選フレームワーク20

ブックカフェにて。

 

フレームワークを仕事に取り入れると効率的だったり、わかりやすかったり、漏れがなかったりすると感じるので↓をさらっと読んでみた。

 

マジビジプロ ハンディ版 新人コンサルタントが最初に学ぶ 厳選フレームワーク20 (マジビジプロハンディ版)

マジビジプロ ハンディ版 新人コンサルタントが最初に学ぶ 厳選フレームワーク20 (マジビジプロハンディ版)

 

 

 

一つだけ紹介。

※あくまで個人的な理解で書いてます。 

 

RACI・・・役割を明らかにするフレームワーク

実行責任者、説明責任者、協力者、報告先。

 

実行者:作業やる人

説明者:作業結果を報告先に報告する人

協力者:情報を提供する人。

報告先:この人たちが説明に納得すると作業完了。

 

ーーーーーーーーー

過去PJで一緒になった外資コンサルが使っていたRACIというフレームワークを思い出したのでもう一度おさらいしてみた。

 

ほかにもいろいろ参考になった。古本で買おうかな。1300円をケチりたい。

 

PJでは、WBSを引く際に使っていた。

RACI教えてくれたあの人名前なんだっけな。

モチベーション低かったけど、なんかかっこ良かったな。

 

 

 

いろいろやりたいけど、とりあえず今日やりたいことを書いてみる。。。

2016/4/5 今日の目標。

 

Gmailのゴミをフィルタリング 30分

本当にイライラする。 

 

■Qiita登録 15分 完了

最近学んだことをまとめたい。

  特にvirtual box周り。きっとアプリ開発者にとって良いものになるはず。

       ま、PaaSには叶わんけど、クラウドと違ってハードウェアを自分のコントロール下

  におけることがいいことだと思う。

→とりあえず投稿は後。この↓アプリなんだ?

kobito.qiita.com

 

■読書ブログはここでいいや。45分

 今、津田沼のブックカフェ↓

 

tsumaranai-man.com

 

ちょっとこの本を読んでみる。

 

マジビジプロ ハンディ版 新人コンサルタントが最初に学ぶ 厳選フレームワーク20 (マジビジプロハンディ版)

マジビジプロ ハンディ版 新人コンサルタントが最初に学ぶ 厳選フレームワーク20 (マジビジプロハンディ版)

 

目的は、フレームワークの基本を頭に入れておくこと。

コンサル系はマーケティングが念頭にあるけど、システム屋として利用できるように話を置き換えてこのブログにまとめる。

 

macbook aironenoteをインストール 10分

たしかタダだったはず。

Mac OS X 10.10が必要だった!OSのアップデートは抵抗感強いので、ちょっと保留 

 

amazonアフェリエイトに登録  30分 完了

小銭を稼ぎたい!!

→登録したら、アソシエイトの使い方↓に遷移された。後で読もう!

Amazonアソシエイト(アフィリエイト)プログラムに参加しよう! - クイックツアー

 

 

AWSのパスワードを変更  5分  完了

→パスワードをいつもの+ハロー的なやつに変更。かなり強力だが忘れたらアウト

Lineのノートに書いておこう。4/5投稿分 

 

 合計135分。目標120分 19時まで。ツレが家に来るからそれまでに片付ける。

明日はTomcatをやるからamazonで注文するかな。

 

と思ったら18時過ぎにくるらしい。以外とはやかった。厳選フレームワークをさらっと読もう。

やりたいこと。

やりたいことがいっぱいあるので、とりあえず羅列してみる。

 

システムに関して

LPIC→今年中にレベル3取得→童顔だから、せめて履歴書だけは重厚感がほしい。

・Docker使ってみたい。仮想とどれだけ違うのか気になる。ハイパーバイザー型と違いOSのリソースを共有すということ。

 目的は個人利用

AWS基本的なところは学んだから、OSのテンプレート AMIを作りたい。

 ヤバい→すぐに検証→新規インスタンス作成みたいなやつ。セキュリティ万全の。

・仮想の知識も体系的に学ばねば。

・ネットワークも何となくから抜け出したい。

シェルスクリプトももっと早くかけるようになろう。

いくつかテンプレートを作りたい。MW起動・停止、バックアップ、引き渡し時のOSのスペック確認。。。さすがにServerSpecのサーバと接続して確認させてくださいは辛いもんね。

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

 

 ・アプリもできたらいいよね。Javaはもっと深く。

 個人的興味はWebだからPHPかPealかな。JavaScriptもやりたい。Ajax.

・要件定義全般の知識を持ちたいな。監視とは。バックアップどうする。

 リストア、リカバリどう考える? OSイメージ DBFファイルのバックアップ ディレクトリ丸ごとバックアップ。。。

とりあえず会社にあった下記を借りパクしたい。

ソフトウェアエンジニアのための ITインフラ監視[実践]入門 (Software Design plus)

ソフトウェアエンジニアのための ITインフラ監視[実践]入門 (Software Design plus)

 

 

・セキュリティ施策もまとめたい。ネットワーク、OSレベル、MWレベル、アプリ(プログラムレベル)。。。

 

教養として

・コンサル的な知識はデータサイエンティスト的な知識があったらいいな。

 ものの見方。大量データを視覚化してちゃんと考察できるといいな。

 tableau試してみたい。

・基本的なフレームワークは覚えよう。何か新しいことに直面した際に図解するテクニックが必要。自分の理解する助けにもなる。

・もう一度ORを再入門したい。

 

仕事の仕方

タスク管理はだいぶ良くなった。

アウトプットの早さと情報整理法を整理したい。

インプットの取得先いろいろ整理したいな。

手帳の使い道を整理したい。

アウトプット先を複数もちたい(twitter,facebook,Qiita,はてなSlideShare。。。書評を集めたサイトがどっかにあったはず。)

 

作業場所

家はイケてないので、ネットワークの速度を必要としない場合はスターバックスさんにお世話になろう。→お店を選定したい。