2016年08月24日

ServerIOTimeOut の弊害

更新何年ぶりだろな

相変わらず、WebSphereとかjavaとかしてますが、あまり目新しいことや
Tips的なの無いんですよね。(有っても書けないことのほうが多いからのう

今回はWASV6からだったか追加されてるServerIOTimeOutの挙動についての豆知識。
マニュアルなどからは読み取れない細かい話だけれども。

http://www-01.ibm.com/support/docview.wss?uid=jpn1J1000347
http://www-01.ibm.com/support/docview.wss?uid=jpn1J1012104

ここいらに書いてあるServerIOTimeOutのパラメータについて、
クラスタ構成で、正の値が指定されている場合、マークダウンせずに次のサーバーへ
リルートが行われる。

多重処理を防ぐために、PostBufferSizeをゼロにした時、
説明にはこうある。

"
PostBufferSizeが0であるためリクエストのコンテンツをバッファーせず、
更にServerIOTimeoutが正の値ですので、該当サーバーをマークダウンせず、
クライアントに500エラーを返します。
"


HTTP応答コードは最初の応答を返す前に付与される情報であるので、
例えばいくつかの応答を吐きだした後に、Webアプリケーションが張り付いた場合
クライアントには既にHTTP200といくらかの応答が返っているので、HTTP500を返すことはできない。
よって、応答コードだけをServerIOTimeOutが発生したかの判断に使うのは危険だと思う。

この少しだけ応答した場合のServerIOTimeOut有無はAccessLogの応答サイズや、
応答時間ぐらいしか判断材料がない。
http_plugin.logで確認するにはLogLevelをDEBUGまで上げる必要がある


http_plugin.log
[24/Aug/2016:16:01:28.65581] 00001df0 be1fc700 - DEBUG: mod_was_ap22_http: cb_write_body: In the write body callback writing 289
[24/Aug/2016:16:01:28.65601] 00001df0 be1fc700 - DEBUG: lib_htresponse: htresponseGetChunk: Getting the next chunk
[24/Aug/2016:16:01:28.65604] 00001df0 be1fc700 - TRACE: lib_rio: Blocking for read, waiting 45
[24/Aug/2016:16:01:29.22684] 00001e11 c8ed2700 - DEBUG: mod_was_ap22_http: as_child_init pid= 00001E11
[24/Aug/2016:16:02:13.66877] 00001df0 be1fc700 - DEBUG: lib_rio: wait_on_socket: ServerIOTimeout fired.
[24/Aug/2016:16:02:13.66883] 00001df0 be1fc700 - DEBUG: lib_rio.c line 894 : Read failed, rc=11

access.log
192.168.1.10 - - [24/Aug/2016:16:00:00 +0900] "GET /MyTestWeb/post.html HTTP/1.1" 200 409
192.168.1.10 - - [24/Aug/2016:16:01:28 +0900] "POST /MyTestWeb/IOTimeOutTest.jsp HTTP/1.1" 200 289

※ServerIOTimeOutを45秒に設定、アプリケーションで少し出力したあとに60秒sleepさせてみた結果


htresponseGetChunkのエラーで検知できるかもだが、ちょっと微妙過ぎる気がするぜ。
どうでもいいが、TimeOut発動時のログ、fired! ってのがちょっとかっこいいな
posted by koteitan at 22:34| Comment(0) | TrackBack(0) | WebSphere | このブログの読者になる | 更新情報をチェックする

2014年06月11日

[AIX]coreファイルの出力先変更について

オッサンはsyscorepathをinittabに入れる
→ syscorepathは恒久変更じゃないから
 確認方法 はsyscorepath -g

最近の人はchcoreを使う。
確認は chcore -l

infocenterのリンクは貼っても古くなるのでコマンドでgoogleしてくだされ。
posted by koteitan at 18:23| Comment(0) | TrackBack(0) | aix | このブログの読者になる | 更新情報をチェックする

2013年06月05日

[WebSphere]スレッド数を見たい時点でもう設計として(以下略 −2−

しかし、本当に要るのだろうかね。
詳細は前回のリンクの英文にあるので、それを見てもらえば概ね大丈夫だとおもうです。

(1)PMIの名前をゲットしてきて

#PMI Name
perfN = AdminControl.completeObjectName('type=Perf,process='+AS名とか+',*')

(2)PMIオブジェクトを作成して
   ((1)の名前がとれなかった場合は、PMIが無効になっている)

#PMI Object Name
perfObj = AdminControl.makeObjectName(perfN)

(3)見たいパフォーマンスデータのオブジェクト名を取得してきて

thpool_w = AdminControl.completeObjectName('type=ThreadPool,process='+AS名やって+',name=WebContainer,*')

(4)javax.management型に変換して

import javax.management as mgmt
param = [ mgmt.ObjectName(thpool_w), java.lang.Boolean('false')]

(5)jmxのメソッドを呼ぶ

sigs = ['javax.management.ObjectName', 'java.lang.Boolean']
th_stat = AdminControl.invoke_jmx( perfObj, 'getStatsObject', param, sigs)

(6)あとは煮るなり焼くなり好きにしてくれ
 (これは数だけ表示させる例)

for i in th_stat.getStatisticNames():
stat = th_stat.getStatistic(i)
stat_val = None
className=str(stat.getClass())
if (className.find("Count") > -1):
stat_val = stat.getCount()
else:
stat_val = stat.getCurrent()

print "%s,%s,%s" % (stat.getName(),stat.getDescription()[:-1],stat_val)


原文抜粋
To show how you can do this, we'll start with the techniques described in an earlier article, Writing PMI applications using the JMX interface. The examples in that article were created for Java developers. Here, we'll use wsadmin Jython scripts to demonstrate how easy it can be using this method to read and understand performance metrics.

なんて簡単なんでしょう!そう、IBMerならね!(ドヤァ

ホンマか!?(;´Д`)
ホンマにこれ簡単なんか!?

参考リンク
http://pic.dhe.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=%2Fcom.ibm.websphere.javadoc.doc%2Fpublic_html%2Fapi%2Fcom%2Fibm%2Fwebsphere%2Fpmi%2Fstat%2FStatsImpl.html

https://www.ibm.com/developerworks/websphere/techjournal/1112_guillemenot/1112_guillemenot.html?ca=drs-

http://publib.boulder.ibm.com/infocenter/wsdoc400/v6r0/index.jsp?topic=/com.ibm.websphere.iseries.doc/info/ae/ae/rxml_admincontrol.html
posted by koteitan at 14:13| Comment(0) | TrackBack(0) | WebSphere | このブログの読者になる | 更新情報をチェックする

2013年05月30日

[WebSphere]スレッド数を見たい時点でもう設計として(以下略

PMI()にアクセスできればWASの内部状態を知ることができる。
例えば活動中のスレッドプール数、コネクション接続数などなど。
設定値上はMin/Maxしかないものの現在の値がチェックできるので、見積もり時や
トラブル時などに役に立つだろう。
決して本番稼働中システムの設定値が妥当かどうかを見るために使うものではないと思う。
(理由は(1)の※2)
ただし、PMIのデータを見るには以下のいくつかのステップが必要だ。

(1)WASのPMI機能を有効にする
  ※1 適切なレベル設定になっていないと見たいものが見えない
  ※2 しかし上位になればなるほどパフォーマンス影響がでる。(プロファイラみたいなもんだし)

(2)ローカルマシン上のTPVクライアントから(1)のサーバーへ接続して目的のJVMを確認する
   もしくは管理コンソールから確認する(負荷かかるのでローカルの方がよい)

まぁ、ほとんどは(1)のステップが設定変更を伴うためウヘァとなるだろうか。
TPVによる図示はSVG変換などでいくらか余計なコストがかかるので、
wsadminから強引に取りだすこともできる。スクリプトなのでロギングしたり、定期的にチェックしたりも余裕でできる。
(やっと本題)
だが、長いので次回に。

ここ見て予習しておいてくだせぇ('ω')ノ
http://www.ibm.com/developerworks/jp/websphere/library/was/was8_jvm_update/

しっかし、これ役に立つんだろうか・・。備忘録とはいえ忘れていいんじゃないかとすら思う(;´Д`)。
posted by koteitan at 09:31| Comment(0) | TrackBack(0) | WebSphere | このブログの読者になる | 更新情報をチェックする

2013年05月29日

[セキュリティ]これはひどい(;´Д`)

robots.txt の設定がクソまじめすぎて噴いた。
ピュアハートなのだろう。

それは robots.txt の問題じゃなくて...
http://hyper-text.org/archives/2013/05/robotstxt_is_not_bad.shtml

Drupalについては詳しく知らないけど、オープンソースなCMSなんでしょう。
WebサイトやHTMLの構造に詳しくなくてもポータルサイトを運営したりと利用者からすれば
便利なものではあるんだが、構築ぐらいはプロに頼まないとなぁ・・。
オープンソース=タダ=安い が先行してると感じたよ。

CVVの保存とかシステム設計自体もイケてないっぽいしなー。
インシデント発生から発表までの遅さとかから運営会社自体イケてないのはわかるが
構築した業者も相当だと思ったなぁ。
まぁ、セキュリティの会社に頼むと高いからな。安く済ませたいのはわかるけど
高いのには高い理由があるし、その逆で安いのは安い理由があるんだよなぁ。
流出したIDの持ち主さんや、不正利用されたショップ様がかわいそうだぜ。

それにしても、この会社の杜撰さを叩くのは私もわかるけど、
一番悪いのはIDを盗んだ連中と不正利用している連中だよな。
鍵がかかっていなかったら盗んでよい、なんてことはないわけで。
詐欺とかもそうで、だまされるやつが悪いんじゃなくて、だます方が悪いんだしね。


posted by koteitan at 17:50| Comment(0) | TrackBack(0) | 情報処理 | このブログの読者になる | 更新情報をチェックする

[powershell]タスクマネージャーから呼び出す!

powerCLIのスクリプトをコマンドから実行するには以下のようにオプションを指定する


powershell.exe -psc "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\vim.psc1" -c "script.ps1"

タスクスケジューラに登録する場合は
プログラム/スクリプトに 「powershell.exe」
引数に            「-psc "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\vim.psc1" -c "script.ps1" 」

これでOK。
posted by koteitan at 16:57| Comment(0) | TrackBack(0) | powershell | このブログの読者になる | 更新情報をチェックする

2013年05月27日

[AIX]Who's using my port?

Tecnoteが更新されていた。lsofを使う普通の表記になっちゃってて
結局ファイルセット入ってないとわからんのかーい(;´Д`)と。
bos.netとかに取り込んだらええのにな。

本家を見に行くとわかるのだが、昔はrmsockで削除を試みて(使用中だから消せない)
そのメッセージからつかんでいるプロセスを特定しようというなかなかワイルドなやり方だった。
どうやら、その方法には問題があるのでlsofの表現のに替えたよ、てことなのかな。

Who's using my port? (AIX, Linux, Windows example)
http://www-01.ibm.com/support/docview.wss?uid=swg21264632
Please note that this technote previously illustrated the use of rmsock command. However, a recent discovery revealed that rmsock command may exhibit an unstable behaviour. Hence, it was removed from this technote. We apologize for the inconvenience this has caused.

以前のやり方は

netstat -Aan | grep ポート番号

でソケットアドレスを取り出して

rmsock ソケットアドレス tcpcb
The socket 0xXXXXXXXX is being held by proccess YYYYYY (ZZZZZZ).

というエラーメッセージから判断するという杉ちゃんもビックリなワイルドな方法であったのだよ。
公式ページに記載あるようにこのやり方はソケットの状態が不安定になる危険があるため
推奨されないし、やっちゃダメ。lsofをちゃんと導入時にインストールしておこう。
posted by koteitan at 17:01| Comment(0) | TrackBack(0) | aix | このブログの読者になる | 更新情報をチェックする

2013年05月24日

[javascript]便利なようで不便なようで、やっぱり便利なようで

なんでtrim()が無いんでしょうなぁ・・。('Д')
いや、まぁ正規表現とreplaceでおんなじことできるちゃできるけど
こんだけWEBとかHTML流行ってるんだから、最近のブラウザぐらいは対応してくれてもええやんか・・。
2013/05/27 対応してます(;´Д`)

trim()と同じreplaceはこう書く

replace(/^\s+|\s+$/g,'')

いや、まぁなんだかなぁと。そう思った午後でした。

2013/05/27 追記
コメントを頂いたので、調べてみた。
確かに、このblogを書きこんでいるfirefox21.0(win8)ではtrim()が作動する。(;´Д`)アレレ?
もっと調べてみると、どうやらjavascriptの1.8.1から実装されたようで最近のブラウザでは実装されているようだ。
https://developer.mozilla.org/ja/docs/JavaScript/Reference/Global_Objects/String/trim
いやはや、情報サンクスでした。


posted by koteitan at 19:25| Comment(3) | TrackBack(0) | その他備忘録 | このブログの読者になる | 更新情報をチェックする

2013年05月22日

P2V -実環境を仮想化へ移動する- そのときの落とし穴

P2Vがスムーズにいけば夢の世界が。
だがしかし、現実は甘くない。
お試しで昔のthinkpadの仮想環境を作ってみたが、実際にはいくつもの障害が立ちはだかった。

http://worktoolsmith.com/2010/11/vmware-vcenter-converter-sysprep%E3%81%8C%E3%81%AA%E3%81%84%E3%81%A8%E3%81%84%E3%81%86%E8%AD%A6%E5%91%8A%E3%81%8C%E5%87%BA%E3%82%8B/

XPをV化するときに必要なsysrepの入手と配置。
これは無い状態で実施するとエラーがでるので気づくかもしれない。

参考にさせていただいた記事
http://it-junkbox.cocolog-nifty.com/blog/2012/04/p2v.html
http://www.climb.co.jp/blog_vmware/vmware-5013
http://blog.engineer.adways.net/archives/21117622.html
http://blog.engineer.adways.net/archives/21117622.html

しかし、V化した後も謎の青画面、XPの認証問題、電源落ちない(ドライバ周りか)という強敵が待っている。
Pの環境が自作PCとかで通常ドライバ+通常ライセンスだと比較的簡単かもしれないが
メーカーPCだと固有ドライバ、OEMライセンスという縛り付けがきつい。
XPの認証問題はいまXpを買うとすさまじく高いので、7へアップグレードするか
8に移行しちゃうかがいいかもしんない。

もっとも安全で且つ、未来を見据えると
一回だけガマンして、手動で7なり8なりへ移行する(これは仮想環境で作る)
そして、その仮想イメージを使う。(私がT42をmacbook上のVMfusion win8proへ移行した方法)
P2Vなんて夢やったんや・・・が結局手っとり早い気がせんでもない。
個人だとV化したい環境なんて一桁台やろうしね。
企業とかで何百台とかあるとか、このOSでしか動かない!とかあると大変やね。


posted by koteitan at 10:13| Comment(0) | TrackBack(0) | その他備忘録 | このブログの読者になる | 更新情報をチェックする

2013年05月21日

[WebSphere]scriptLibrary

アプリを操作するとき、普通はAdminappだよな

http://pic.dhe.ibm.com/infocenter/wasinfo/v6r1/topic/com.ibm.websphere.express.doc/info/exp/ae/txml_exportdll.html


でも、めんどくさがり屋さんのためにもうちょっと使いやすくしたもの(スクリプトで便利関数とかにしたものというか)が
スクリプトライブラリ。

http://pic.dhe.ibm.com/infocenter/wasinfo/v8r5/topic/com.ibm.websphere.nd.doc/ae/rxml_7libapp3.html

こっちだとAdminApplication

スクリプトライブラリは、Websphere導入先のscriptLibrariesディレクトリに入っている。
wsadmin起動時に自動でclassも読み込まれるので、オブジェクトとして利用することもできるし
jythonのサンプルスクリプトとしても使える。

http://pic.dhe.ibm.com/infocenter/wasinfo/v8r5/topic/com.ibm.websphere.nd.doc/ae/welc_ref_adm_jython.html

うーむ、infocenterへのリンクがバージョンバラバラやんか。(;´Д`)
まぁ、適当に読み替えてくだしあ。

posted by koteitan at 11:41| Comment(0) | TrackBack(0) | WebSphere | このブログの読者になる | 更新情報をチェックする