windowsでのあれこれ

Windowsでパフォーマンスやプロセスの状態を取得する方法。コマンドで。

1. プロセスの状態を取得する方法

tasklist

2. プロセスのサービス名を取得する方法

tasklist /svc

3. サービス名を取得する(すべて)

sc query

4. サービス名を取得する(動作中のみ)

sc query | findstr /i service_name

5. サービス名を取得する(止まっているサービス)

sc query state= inactive | findstr /i service_name

7. CPU使用率

C:\> typeperf "\Processor(_Total)\% Processor Time" > typeperf_cpu.txt

8. メモリ使用状態

C:\> typeperf "\Memory\*" > typeperf_mem.txt

NTP時刻同期

  • Linux上で時刻同期をするときのコマンド
ntpdate NTPサーバーのアドレス

コマンド実行時は使用しているノードのNTPDサービスを停止させておかないと「the NTP socket is in use, exiting」というエラーメッセージが表示される。ノードのNTPサーバーを一旦、停止させてから再度起動するか、オプションで-uを付与する。

  • サービス停止のとき
service ntpd stop|
ntpdate NTPサーバーのアドレス
service ntpd start
  • オプション付与して強制的にupdate
ntpdate -u NTPサーバーのアドレス

LinuxからWindowsの時刻を参照する

  • 前提:samba-commonが必要
  • 対象マシンの時間を表示する。
# net time -I WindowsマシンのIPアドレス
  • 対象マシンの時刻情報をLinuxマシン側に反映する。(rootで実行する必要あり)
# net time set -I WindowsマシンのIPアドレス

Windows⇔Linux(centos)のファイルやりとり

WindowsマシンとLinuxマシンでのファイルやりとりをする方法のまとめ。

(1) WinSCPを使う

Windowsマシンにインストールするだけ。一番手軽。
が、しかし、容量の大きいファイルを転送すると時々欠損する。

http://winscp.net/eng/docs/lang:jp


(2) TeraTermSSH SCP転送機能を使う

Windowsマシン上からTeraTermLinuxに接続している場合、コンソール上にドラッグ&ドロップでファイル転送可能。
または、ファイルメニューから、「SSH SCP」を選択して実行する。

が、しかし、一点注意点があるのです。
ファイルの権限には注意が必要で、「root」ユーザにスイッチしてからファイルの受信を行っても、最初にログインしたユーザの権限でしかファイルの受信が出来ません。

http://ttssh2.sourceforge.jp/


(3) Linux側にSamba-Clientを入れてマウント

Linuxマシン側にSamba-Clientを入れて、Windowsマシン側はディレクトリ共有をかけておく。
あとは、Linux側で操作するだけで、共有ディレクトリに対してアクセスするだけ。

手順はこんな感じ↓

1)samba-clientが入っているか確認。
確認方法:rpm -q samba-clientと打ってみてパッケージ samba はインストールされていません。と出たらsambaをインストール。

2)samba-clientインストール
yum install samba-client
インストール確認は以下で。
rpm -q samba-client
こんな出力がされる。→samba-client-3.6.9-169.el6_5.x86_64

3)Windows側で共有ディレクトリを作成

4)Linux側でディレクトリマウント
rootユーザで以下のコマンドを打つ。
smbclient '\\windowsマシンのIPアドレス(or ホスト名)\3)で作った共有ディレクトリ名' -U ユーザー名%パスワード

5)操作
ファイルをLinuxWindowsに置く
put ディレクトリパス/ファイル名 3)の共有ディレクトリに置く用のファイル名

MySQL

データベーススケールアウト(分散構成)についてのメモ
KeyWords:データベース、分散、スケールアウト、MySQLMySQL Cluster、SemiSync

MySQL冗長化手段
MySQL Cluster
・DRBD
MySQL Replication

MySQL Clusterで使用できるトランザクション分離レベル
READ COMMITTEDのみ
(他のトランザクションのコミット済みデータを読み込む。
  Non-Repeatable Read, Phantom Read)

Semi-Synchronous
スレーブへのバイナリログ転送が保証されるのが特徴
I/Oスレッドは同期
SQLスレッドは非同期
MySQL5.5以降

※注意点
複数台のスレーブがある場合
 1台がAckを返した時点でCOMMIT完了

マスターはAckを待っている間COMMITが止まる
 スレーブ障害がマスターに伝播する可能性あり
 rpl_semi_sync_master_timeoutを短くする


Failoverについて
 ・MySQL MHA
 ・mysqlfailover(MySQL5.6以降)
  →Pythonで書かれた公式のスクリプト
 ・自前
  →最新スレーブ判定は準同期レプリで代用可能

DB基盤セミナー(Oracle)

先日、新日鉄の基盤刷新セミナーに出席してきた。

紹介されたDB基盤はOracleのExadataってやつで、パネエ感じだった。
アプライアンスサーバになってて、ネットワーク機器からストレージからが一体となってって感じで。
もちろん信頼性も高いってわけ。
中でも注目は、SmarScanって技術。これが、検索の性能をめちゃめちゃ発揮してくれる。らしい。
なんでも、ストレージ上でデータを検索して、その結果を教えてくれるらしいよ。
ま、ちゃんとSmatrScanに対応したクエリを発行しないといけないみたいだけど。

うちの会社の方針は天下のまいくろさんだから、なかなかOracleを導入するって話にはならないかもしれないけど、アプリの作りを軽くして(コストも設計も)、H/W側に性能を担保してもらうってのは、そういう意味ではありなのかもしれない。

余談ですけどセミナーの懇親会でお話した他の会社のエンジニアの人おもろかった。