SAS9.4のシステムが遅いときに、どこから点検していけば素早く問題を解決できるか?思いつくままに、場当たり的に探すのは効率が悪い。また、基盤の問題はSASからは検出できないことが多いため、OS、N/Wも含めた調査が必要である。切り分け、問題を調査するときに役立つ点検ポイントを列挙する。
SASプログラムとログを解析するユーティリティを開発するための備忘録です。This is a memo to develop utility that analyzes the SAS log.
2021年5月24日月曜日
SAS 9.4のシステムが遅いときの点検項目
ホスト名とIPアドレスは正引き・逆引きできるか?意外と正しい値が得られずに、複数のNIC、経路を辿って遅いケースが多いと感じる。ping, nslookupなどのコマンドを使いサーバ間の名前、名前からIPを引けることを確認する。
SAS Environment Managerから点検すれば早い。もしSAS Environment Managerが使えないならば、めぼしいログファイルを片端から目視でチェックする。
サーバ上からのアクセスと、クライアントからのアクセスによる差を見ることで、N/Wの経路の問題かサーバの問題か切り分けできる。N/Wの帯域を故意に絞っている環境だと、いかんともしがたい。
認証のサーバによる違いで遅いケースがある。ローカルのユーザ、LDAPのユーザと比べて差を確かめる。
あなたがもし慎重であれば、構築時にログインの時間、空のレポートを表示する時間をとっているはず。そのときの時間と比べて、どれだけ遅くなったかを比較すると、構築時の問題か、構築後の問題か切り分けできる。
CPU、メモリ、ディスク、N/Wについて、JP1とかTivoliから確認する。
これらの点検で、問題の8割ぐらいは捕捉できると感じる。これらの点検には0.5人日あればできる。
2021年3月10日水曜日
Junitのダウンロード
curlでWebサイト等のファイルをダウンロードする方法。たまにしか使わないので忘れがち、メモしておきます。リモートで働いていると、ローカルのPCを経由していると何かと遅いから
2021年2月10日水曜日
Metadataバックアップのステータスを取得するサンプル
運用ネタです。メタデータバックアップの履歴を参照して、最後のバックアップが成功したかどうかステータスを確認する方法をメモしておきます。xmllintは読みやすく整形するときにしか使っていませんでしたが、特定のタグを抽出するときに便利ですね。たまにしか使わないので指定の仕方を忘れるので、ここにメモします。
echo 'cat /MetadataServerBackupManifest/Backups/Backup[last()]/@*' | \ xmllint --shell Lev1/SASMeta/MetadataServer/Backups/MetadataServerBackupHistory.xml | \ grep =実行すると以下のような結果が得られます。
Status="Successful" StartingUserID="META:Scheduler" StartDateTime="2021-02-10T01:00:00+09:00" Name="2021-02-10T01_00_00+09_00" Directory="Backups/2021-02-10T01_00_00+09_00" Comment="" Reorg="N" Size="539963257" LastVerifyDateTime="2021-02-10T18:42:58+09:00" LastVerifyStatus="Successful"
2021年1月17日日曜日
タイムスタンプの文字列生成
よく使うけど、すぐに忘れるタイムスタンプの文字列
%let dt=%sysfunc(putn(%sysfunc(datetime()), E8601DT20.));
2021-01-17T20:35:17
2021年1月8日金曜日
メタデータオブジェクトの検索例
SAS9でメタデータサーバの情報を探し出して、リストを作ることは稀にあります。たまにしかやらないから、どんな検索式を与えるか忘れてしまいます。備忘としていくつか例を残してい置きます。メタデータのAPIは、情報を1個ずつとると遅いのでできれば検索式で絞り込んで少ない回数で取得した方が良いです。
配置済みのジョブの検索
JFJob?@id contains '.' and @PublicType = 'DeployedJob'
実行キューの名前からジョブフローを検索
omsobj:JFJob?JFjob[@id contains '.' ][Properties/Property[@DefaultValue='normal' and @Name='QUEUE']
トリガーの条件を設定している配置済みフローを検索
omsobj:JFJob?JFjob[@PublicType = 'DeployedFlow'][Steps/SyncStep/TriggeringEvents/Event]]
配置済みジョブフローのオブジェ口IDを指定してかつ、作成者を特定する検索式
omsobj:ResponsibleParty?ResponsibleParty[@Role='Created By'][Objects/JFJob[@id='A5MGMPLF.BZ001J44']]
プロパティの名前からメタデータオブジェクトを検索する例
omsobj:Property?@Name='SCHEDULINGDETAILS'
テーブルの名前をからメタデータオブジェクトを検索する例
PhysicalTable?@id contains '.' and @Name eq 'HMEQ'
2020年10月22日木曜日
2020年9月19日土曜日
SAS9のプロセスから環境変数の設定を生成
何かのスクリプトを使うときに億劫に感じるのが設定です。で考えたのが動いているプロセスから主要なプロダクトのディレクトリを探す方法です。
#!/bin/sh
function variable() {
TEMPLSIT=`mktemp --tmpdir=/var/tmp XXX.sh`
while read var cmd depth
do
ps --no-headers --format cmd -C $cmd | \
awk -vcmd=$cmd '{ for(i = 1; i <= NF; i++) { if (index($i, cmd) > 0) { print $i; exit} } }' | \
awk -vd=$depth '{ n = split($1, a, "/"); for (i = 2; i < (n + d); i++) { printf("/%s", a[i]) } print ""; }' | \
awk -vvar=$var '{ printf("export %s=%s\n", var, $1 ) }'
done << _EOF_
SAS_HOME sasauth -4
SAS_CONFIG MetadataServer.sh -3
LSF_HOME mbatchd -3
PM_HOME jfd -3
RTM_HOME lsfpollerd -2
GMS_HOME gabd -1
_EOF_
rm -f $TEMPLSIT
}
variable
実行すると環境変数の定義を生成します。
[root@dwtcjp conf]# sh variable.sh export SAS_HOME=/SAS/SAS_HOME export SAS_CONFIG=/SAS/SAS_CONFIG export LSF_HOME=/SAS/LSF_HOME export PM_HOME=/SAS/PM_HOME export RTM_HOME=/SAS/RTM_HOME export GMS_HOME=/SAS/LSF_HOME/gms
登録:
投稿
(
Atom
)
