2013/10/28

tomcat thread 数 負荷確認

★tomcatが受付可能な最大スレッド数ー>server.xmlのmaxThreads
・コネクションのmaxThread
 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"
    maxThreads="500" />



★tomcatのThread数?上記の指定値はOSで実現できる?
●まずはOSー>Linux(Kernel 2.6及びそれ以降)で用いられているNTPL(Native POSIX Thread Library)。これは1:1モデルのスレッドライブラリで、スレッドをプロセスとして実装してある
・/proc/sys/kernel/threads-max ->linux扱う可能の最大スレッド数
・/proc/sys/vm/max_map_count->linuxで、メモリー関係で対応可能数(いくらを与えるなど。。)
・★/ect/security/limit.cnfで設定された上限。数とサイズ
  max user processes
  stack size=>*MBまで使ってもいいよという意味。上限
●次はJVM -XX:ThreadStackSize こいつのデフォルトは320kである(java1.7)



●●結局、JVMのデフォルトthreadStackSize使う場合、limitで確認できたmax user processesまで行ける。。
計算式であれば、
tomcatなどの起動時状態で、システムの(buffer+free/threadStackSize) と(max user processes)
の少ない方である。



・スレッドの数を確認する
ls -l /proc/$( ps -ef | grep Bootstrap | grep -v grep | awk '{print $2}' | head -1 )/task | wc -l
=>head -N 先頭からN行を表示する
=>awk '{print $2}' 第二列だけ表示する
=>grep -v ** 除外する
=>$() 実行結果をもらう
=>/proc/**/task スレッドの数



・DB接続数
netstat -t | grep DBアドレス | wc -l



・クラント側の接続数
netstat -t | grep 8009(apcheから) | wc -l
netstat -t | grep bot**(負荷書けるマシン) | wc -l

tomcat does not release memory

The JVM does return memory to the operating system. I use -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=10 frequently for a process that needs 1GB at startup until it is settled, but then runs fine with 250MB forever.

2013/10/25

linux memory 足りない?

・メモリ-は十分?余裕が無い?
/+ buffers/chche を見よう

Linux(っていうか UNIX かな?) では, 各プロセスにメモリを割り振った残りを バッファ(buffer)とキャッシュ(cache)に利用して, ディスク入出力の負荷を減らしている. そのため, free コマンド等で見える残りメモリ-(free)は 1M 程度の 瞬間的な使いまわしに対処する程度しか残っていない事が多い.
topじゃないよ。。。
$ free
             total       used       free     shared    buffers     cached
Mem:        192572     190944       1628      54912      20112     126848
-/+ buffers/cache:      43984     148588  <----ここを見る
Swap:        96384          0      96384

この例では, 実質的な残りメモリ-は, バッファとキャッシュに転用された分も考慮すると free+buffers+cached で計算できる. 上の例で云うと free+buffers+cached = 1628+20112+126848 = 148588. まだまだ, メモリ-には余裕がある.

top コマンドを起動してから "M"(大文字) すると消費メモリの順に表示される.

2013/10/24

linux uname kernel version

uname -a
システム情報の表示
=>Linux *** 2.6.39.4-1.el64.x86_64 #1 SMP Mon Jun 10 16:04:48 JST 2013 x86_64 x86_64 x86_64 GNU/Linux

linux dstat 見方

dstat
-c cpu
-d disk
-m memery
-n net
-p process
-s swap
-y system
-t time/data output

date/time   |usr sys idl wai hiq siq| used  buff  cach  free| used  free| read  writ| recv  send


top-bio: もっとも高コストなブロックI/Oプロセス (-avgあり)
top-childwait: 子プロセスを待つ時間が長いプロセス
top-cpu: もっともコストが高いプロセスを表示する (-avgあり)
top-latency: 合計の遅延が最大のプロセスを表示する (-avgあり)
battery: 電池の残量を表示する(要 /proc/acpi)
cpufreq: CPU 周波数を表示する
dbus: dbusの接続数 (要 python-dbus)
disk-tps: ディスクごとの秒間トランザクション数(tps)
disk-util: ディスクの使用率 [%]
dstat-cpu: dstat自身が使っているCPU時間を表示する
dstat-mem: dstat自身が使っているメモリ量を表示する
fan: ファン速度 (要/proc/acpi)
freespace: パーティションごとのディスク使用量
gpfs: GPFS読み書き、入出力(I/O)回数 (要mmpmon)
gpfs-ops: gpfs の操作回数 (要mmpmon)
innodb-buffer: innodbのバッファー統計
memcache-hits: memcacheのヒット数とミスヒット数
mysql5-cmds: MySQL5のコマンド統計
mysql5-conn: MySQL5の接続統計
mysql5-io: MySQL5の入出力(I/O)統計
mysql5-keys: MySQL5のkeys統計
net-packets: 送受信パケット数(なぜか小数点)
nfs3: NFS3 クライアント
nfs3op: NFS3 クライアントの操作回数
nfsd3: NFS3 デーモンの操作
nfsd3op: NFS3 デーモンの拡張操作回数
ntp: NTPサーバからのNTP時刻
postfix: postfix メールサーバのキューの長さ
power: 電力使用量 (/proc/acpi/batteryが必要)
proc-count: 合計のプロセス数
rpc: RPC クライアントの呼び出し回数
rpcd: RPC デーモンの呼び出し回数
sendmail: semdail メールサーバの送信キュー長 (sudo併用)
squid: squid使用量
test: テストプラグインの出力 (開発用)
thermal: マザーボード、コンピュータシステムの温度
utmp: utmp
vmk-hba: VMware ESX カーネルのvmhba統計
vmk-int: VMware ESX カーネルの割り込み回数
vmk-nic: VMware ESX カーネルのポート統計
vm-memctl: VMwareゲスト内部のballooning状態
vz-cpu: OpenVZゲストごとのCPU使用量
vz-ubc: OpenVZゲストごとの入出力使用量
wifi: 無線 LAN (802.11)の接続品質とシグナル・雑音比(S/N比

apache mod_status

apache2.2.15で、何もしなくても利用できた。。。=>別の人が設定した。
apachectl status


(1)
ExtendedStatus On         <--コメントを外す

(2)
<Location /server-status>    <--コメントを外す
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 192.168.0.   <--192.168.0からのアクセスを許可
</Location>

(3)LoadModule cache_module modules/mod_status.so

アクセス:
http://www/server-status/
apachectl status

linux vmstat 負荷判断

$vmstat 出力間隔

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0    136  10836   3744 1940256    0    0   174  2050  128   96  1  6 74 19  0
 0  0    136  10456   3720 1940424    0    0     0  6731 6067 7326  0  4 85 11  0
 0  0    136  10028   3700 1940796    0    0     0  6730 6039 7285  0  5 84 11  0

CPU
 sy-->OS自身使う物
 us-->USER使う物
 wa-->IO(ディスク、ネットワーク)アクセスの待ち時間割合
 id-->idle ボケー時間

procs
 r-->実行可能で、実行キューで待つプロセス数
 b-->本来実行可能だが、何らかの理由でブロックされた。IO待ちだ!

r-->実行待ちプロセス。これは??知りたい!!!

==>
CPU数を超える数のプロセスを実行する(Runinig状態にする)事はできないので、CPUの状態(コンテキスト)を保存したり復元したりするコンテキストスイッチを行い、各プロセスを短い時間単位で実行させる。
で、コンテキストスイッチによりRunning状態だったプロセスが一時的にWaitingに追い出されたりすると、実行可能な状態だけども実行できないプロセスとして実行キューに入った状態になる。
次回の割当てで処理されれば影響は無いが、実行キューに入っているプロセスが多かったり優先度が低かったりとすると一定期間待つ状態が発生する。
このようなCPUを使いたくても使えない(言い換えるとCPUの使用時間が長い)状況下では、サーバ利用者に「重い」と感じさせてしまう。
実行キューに入る要因は、CPU割り当て時間のタイムアウトだけで無く、I/O待ちやロック解放待ちなど他にもある


memory
 swpdー>使用しているスワップ領域の量。どんなにメモリが空いていても、ここの数値が一定の量に達していることがあります。
     あまり重要ではない。
 buffー>kernelのbuffer領域。メモリ全体が逼迫してくるとここの領域を使う。
 cache->hardDiskのキャッシュサイズ。

swap
 si->swapから読み込んで、メモリーに展開するデータ量
 so->swap out
 メモリーが困る時、頻繁にSWAPに注文し、SO、SI高くなる。

io
 bi->IOから読んだデータ量
 bo->
 
system
 in->割り込み処理の回数
 cs->コンテクストスイッチの回数。主にプログラムの実行を切り替えること。一定ののロスが生じるね。空回り時間。。

そもそもそのサーバはどんな使い方をしているのか
・NFSサーバといった用途で使用していて、ファイルアクセスが頻繁なら、syが高くなりがちなのは妥当でしょう
・perlとかphpとかのスクリプト言語、C言語で主に純粋な計算量が多いプログラムを利用しているというようなケースなら、usが高くなることは妥当
・cron等でバッチ処理が多く動作するサーバなら、ぶっちゃけprocsの実行キュー待ちプロセス数やブロックされたプロセス数が増加していてもあまり気にする必要性は高くないと判断することもできます
・一方で、Webサーバ等の用途なら、実行キュー待ちのプロセス数が多くなってくると、利用者からは「重い」と目の敵にされるかもしれません。
・swapについては基本的にはsiとsoは0で有り続けることを至上命題にすべきです。

2013/10/23

linux kernel parameter

ulimit -a
->/ect/security/limit.cnf ような名前
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 773587
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 32767
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 32767
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

また、
/etc/sys.confようなファイルにある
その中に。。SWAPの使用などを設定できる。

 また、ここもある(CentOS6)
etc/security/limits.d/90-nproc.conf

mysql The LOST_EVENTS incident

masterのbin-log内容:
# at 32383921
#131022 15:52:41 server id 1  end_log_pos 32383978 CRC32 0xa2f68f09
# Incident: LOST_EVENTS
RELOAD DATABASE; # Shall generate syntax error

そのせいで、slaveのreplicationが止まった。
        Last_Error: The incident LOST_EVENTS occured on the master. Message: error writing to the binary log
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 32383921

★結論から言えばマスターが悪い。。。。。
If you got a LOST_EVENTS incident on the Slave, consider yourself (kind of) lucky! Because then you know there could be something wrong, and not find out later that your Slave is inconsistent with the Master.


★例の一つ 5.6.10
As any other activity that produces changes, GRANT statements are replicated to MySQL slaves. Regardless of the binary log format setting, such events are always logged in STATEMENT format. It is likely because the command needs to handle more than just updating the contents of a few system tables, so such design allows each slave to fully execute the changes within their own environment.

This design, the fact that system tables are still non-transactional – they use MyISAM, as well as what I believe was an attempt to address another problem, causes an opportunity for a situation, when issuing an incorrect GRANT statement may break replication.

The following command attempts to grant FILE privilege on test database, which of course is not a valid operation, so MySQL refuses it and even gives an explanation of the problem:

master [localhost] {root} ((none)) > GRANT FILE ON test.* TO test@localhost;
ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES

This is where it ended in previous MySQL versions. MySQL 5.6, however, makes one more step. It writes a binary log event:

#130409 16:49:02 server id 1  end_log_pos 432 CRC32 0xc2005658
# Incident: LOST_EVENTS
RELOAD DATABASE; # Shall generate syntax error
# at 432


★A simple FAILED SQL statement breaks MySQL 5.6 replication


解決:
★stop slave;set global Sql_slave_Skip_Counter =1;start slave;show slave status\G;
★Slaveを作り直し。

mysql slave status

一接続につき、3スレッドが作成される
Masterで一スレッド:Bin-logの内容をSalveに送信する、show processlist=>binlog dumpで確認できる
Slaveで2つスレッド:Bin-logを受信して、relay-logに書き込むスレッド;relay-logをよんで実行するスレッド。




       Slave_IO_State: Waiting for master to send event
          Master_Host: localhost
          Master_User: root
          Master_Port: 3306
        Connect_Retry: 3   =>Masterに接続試しの回数
    
      Master_Log_File: gbichot-bin.005 ==>I/O スレッドが現在読み込んでいるマスタ バイナリ ログ ファイルの名前。
  Read_Master_Log_Pos: 79 ==>現在のマスタ バイナリ ログ内で、I/O スレッドが読み込んだところまでの位置。
    
    
    
       Relay_Log_File: gbichot-relay-bin.005=>現在読み込み、実行をしている SQL スレッドからのリレー ログ ファイルの名前。
        Relay_Log_Pos: 548==>SQL スレッドが現在のリレー ログ内で読み込み、実行したところまでの位置。
Relay_Master_Log_File: gbichot-bin.005==>SQL スレッドによって実行された一番最近のイベントを含むマスタ バイナリ ログ ファイルの名前。
     Exec_Master_Log_Pos: 79=>マスタのバイナリ ログから SQL スレッドによって実行された最後のイベントの位置(Relay_Master_Log_File)。(マスタのバイナリ ログ内の Relay_Master_Log_File と Exec_Master_Log_Pos)はリレーログ内の(Relay_Log_File と Relay_Log_Pos)に対応しています。
    
    
     Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
      Replicate_Do_DB:
  Replicate_Ignore_DB:
           Last_Errno: 0
           Last_Error:
         Skip_Counter: 0
 
      Relay_Log_Space: 552==>全ての既存リレー ログを合計したサイズ。
      Until_Condition: None
       Until_Log_File:
        Until_Log_Pos: 0
   Master_SSL_Allowed: No
   Master_SSL_CA_File:
   Master_SSL_CA_Path:
      Master_SSL_Cert:
    Master_SSL_Cipher:
       Master_SSL_Key:
★★Seconds_Behind_Master: 8==>このフィールドは、スレーブがどの程度 「late」 であるかの目安です。
 基本的に、このフィールドはスレーブ SQL スレッドとスレーブ I/O スレッド間の時差を秒数で計算します。
 もしスレーブ SQL スレッドが起動していなかったり、スレーブ I/O スレッドが起動していない、またはマスタに接続されていない時は、NULL です(「unknown」 を意味する)

2013/10/22

linux web 接続設定

・/proc/sys/net/ipv4/ip_local_port_range
32768   61000
=>61000 ? 32768 = 28232ポート利用可能です
1024-65535がエフェメラルポートなので、1024-65535を設定してしまいましょう。



・netstat -t | wc -l
=>現在のTCP接続数



・接続数が増えてくるとサーバが同時に使用するファイル数も増えてくるかと思います。ファイルディスクリプタ周りの設定を変更しておきましょう
ulimit -n
/etc/security/limits.conf



・再起動してもカーネルパラメータが有効にするため、/etc/sysctl.confへ設定を記述
# sysctl -w 反映
# sysctl -p 確認



他にもいろいろな設定!
net.ipv4.ip_local_port_range = 1024    65535
net.ipv4.tcp_tw_reuse =>This allows reusing sockets in TIME_WAIT state for new connections when it is safe from 。。
net.ipv4.tcp_tw_recycle =>It enables fast recycling of TIME_WAIT sockets.
tcp_max_tw_buckets=>保持できるTIME_WAITセッションの最大数(デフォルト: 131072)
net.ipv4.tcp_fin_timeout = 10=>FIN_WAIT2状態のセッションの保有時間(秒)
tcp_keepalive_time==>TCPセッションが確立されて検査が実施されるまでの時間
tcp_keepalive_intvl=>次の検査を実行するときの待ち時間
tcp_keepalive_probes==>検査の回数
TCPセッションが確立して最短で落ちるまでの時間
==>tcp_keepalive_time+tcp_keepalive_intvl*tcp_keepalive_probes

Mysql received end packet from server, apparent master shutdown

Then, it means the slave is sharing an ID with another slave/node in the replication setup. Check the server ID to make sure it is unique.
=>server_id+server_uuid
show variables like '%server%';
| server_id                       | 2              |
| server_id_bits                  | 32             |
| server_uuid                     | **-**-**-**-** |



server_uuid=>auto.cnf
    Attempt to read and use the UUID written in the file data_dir/auto.cnf exit on success. Otherwise, generate a new UUID and save it to this file, creating the file if necessary.

DBをコピーする時、auto.cnfもコピーしたのせい。。。

2013/10/21

linux centos network 基本設定

・ネットワーク全体:view /etc/sysconfig/network
    1-1. NETWORKING =>yes,no
    1-2. HOSTNAME=>
    1-3. GATEWAY(インタフェースごとの設定ファイルで設定するからいらないかも。自分はいれてません。)



・デバイスごとの設定:/etc/sysconfig/network-scripts/ifcfg-eth0

    2-1. DEVICEー>ethX
    2-2. BOOTPROTO=>static,dhcp,none
    2-3. ONBOOT->yes,no
    2-4. HWADDRー>MAC アドレス
    2-5. IPADDR
    2-6. NETMASK
    2-7. BROADCAST
    2-8. GATEWAY
    2-9. USERCTL=>有効・無効、ユーザ切り離しできる?
    PEERDNS=no=>ネームサーバーを手動で設定する



・DNSサーバーの設定:/etc/resolv.conf
   search **** 規定ドメイン
   nameserver 11.11.11.11
   nameserver 11.11.11.12
   DHCP で ifcfg-eth0 に PEERDNS=no の設定が無い場合、 ネームサーバは自動的に書き変えられる



・自ホストでの名前解決 /etc/hosts
  127.0.0.1       srv1.mydomein srv1 localhost.localdomain localhost
  ::1       srv1.mydomein srv1 localhost.localdomain localhost
  11.11.12.12 ***.**
  後で ホスト名を変更する場合はここのホスト名と /etc/sysconfig/network の HOSTNAME を修正して OS を再起動する
  確認は $hostname
  他にホストの名前ここも登録できる



・名前検索順の指定 /etc/host.conf
ホスト名をIP アドレスに変換するには、DNS サーバに問い合わせるか、あるいは /etc/hosts を参照する、という2種類の方法がある。host.conf でどちらを優先するか設定することができる。
  1       2      3
  bind    hosts  nis
  hosts   bind
 
  nslookup コマンドは、/etc/host.conf を無視し、常に DNS サーバに問い合わせる
 これでもいい
  order hosts,bind
  multi on=>すべでの合致結果を返す
  reorde=>近い物崎に
  trim *** =>filter
 
 
・修正したら、ネットワークを再起動する
/etc/init.d/network stop | start | restart
ifdown | ifup | ifconfig eth0

Mysql Slave failed to initialize relay log info structure from the repository

何らかの理由で、リレーログが読めなくなってしまった
(今回の場合はhard_copy。。。。。。)

この時は、MySQLは上がっていて、スレーブのステータスもとれるので、SHOW SLAVE STATUSで最後の状態を調べる。

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State:
                  Master_Host: ***.***.***.***
                  Master_User: ********
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000009
:(略)
                   Last_Errno: 1872
                   Last_Error: Slave failed to initialize relay log info structure from the repository
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 4840135
:(略)
1 row in set (0.00 sec)

で、Master_Log_FileとExec_Master_Log_Posを見る。ここまでマスターのバイナリログの実行が終わっているので、
==>失敗したところから再開する!

一旦スレーブをリセットして、ここから再開させる。

RESET SLAVE;

CHANGE MASTER TO
MASTER_HOST='***.***.***.***',
MASTER_USER='********',
MASTER_PASSWORD='********',
MASTER_LOG_FILE='mysql-bin.000009', // Master_Log_Fileのファイル名をセット
MASTER_LOG_POS=4840135; // Exec_Master_Log_Posの値をセット

START SLAVE;

これで、スレーブが再開するか確認。
今回はこれで動き出したようだ。

2013/10/20

2013/10/16

java ShutdownHook

java.exeは以下のタイミングで終了する。
    CTRL_C_EVENT
        MS-DOS上で、ctrl+C
    CTRL_CLOSE_EVENT
        MS-DOSの×ボタン
    CTRL_LOGOFF_EVENT
        ユーザがログオフ
    CTRL_SHUTDOWN_EVENT
        PCをシャットダウン
       
       
       
終了することはException処理で対応できない。。
try {
    System.out.println("Start");
    // もろもろの処理
    System.out.println("End");
} catch (Exception e) {
    System.out.println("Exception");
} finally {
    System.out.println("finally");
}

=>Start




解決策としては、shutdownhookを実装する
 // ShutdownHookの設定
 Thread shutdown = new Thread() {
     public void run() {
         System.out.println("Call ShutdownHook");
         // 終了処理
     }
 };
 Runtime.getRuntime().addShutdownHook(shutdown);

 try {
     System.out.println("Start");
     // もろもろの処理
     System.out.println("End");
 } catch (Exception e) {
     System.out.println("Exception");
 } finally {
     System.out.println("finally");
 }

 // ShutdownHookの削除
 Runtime.getRuntime().removeShutdownHook(shutdown);

2013/10/11

tomcat apache mod_jk 設定、デバッグログ出力

LoadModule    jk_module  libexec/mod_jk.so
AddModule     mod_jk.c
JkWorkersFile /usr/local/jakarta-tomcat/conf/workers.properties
JkLogFile     /usr/local/apache/logs/mod_jk.log
JkLogLevel    debug、info、error、emerg
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

Facadeパターン 整合、隠蔽


    Facadeクラスはあくまでサブシステム内部に仕事を投げるだけで複雑な実装は持たない。

    多様な機能の塊であるサブシステムから、サブシステムを利用するユーザーの用途に合わせた窓口(インターフェース)を提供するだけである。

    Facedeクラスをサブシステム自体が利用する事はない。

    Facedeクラスはあくまでサブシステム末端の窓口であるため、同じサブシステムから利用される事はない。

    Facedeパターンはサブシステムの直接使用を妨げない。

    Facedeクラスの利用は強制ではなく、必要であればサブシステムの機能を直接利用できる。言語によっては無名名前空間やPackageスコープによりサブシステムを利用者から隔離できるが、Facedeパターンはそのような制限はしない。
   
===>内部の実現(publicの物も)を隠蔽して、必要なメッソドだけ外部に公開する

Apache License

他のフリーソフトウェア向けライセンスと同様、Apache Licenseではユーザーがそのソフトウェアの使用や頒布、修正、派生版の頒布をすることを制限しない。

Apache Licenseは、頒布される二次的著作物が同じライセンスで提供されたり、フリーソフトウエア、オープンソースソフトウェアとして頒布されることを要求しない。要求するのは、ユーザーがそのソフトウェアにApache Licenseのコードが使われていることを知らせる文言を入れることだけである。従って、コピーレフトライセンスと異なり、Apache Licenseコードの二次創作物のユーザーには、フリーなライセンスが適用されない可能性もある

ライセンスされたファイルそれぞれに元々ある著作権と特許権の記述はそのまま保持されなければならず、何らかの修正が施されている場合は、その旨を追加記述しなければならない

2013/10/04

日本語

最たるーー>さいたる。程度がもっともはなはだしいさま
指弾ーー>しだん、つまはじきすること。非難して排斥(はいせき)すること
青息吐息ー>あおいき。困って苦しいときなどに、弱りきって吐くため息。また、そのため息の出る状態。
喘ぐーー>あえぐ。苦しそうに、せわしく呼吸する。息を切らす
病巣ーー>びょうそう。
ジレンマーー>2つ相反することに挟まる。dilemma

露出ーー>ロシュツ
火種ーー>ひだね
雄弁ーー>ゆうべん
障壁ーー>しょうへき、べんり。
捌く、裁くーー>さばく。解明、適切に処理すること。
大本営ーー>だいほんえい
軋轢ーー>あつれき。合わないので、仲が悪くなる。
ロップーー>rope
鋳物ーー>いもの
猜疑心ーー>さいぎしん
神道-->しんとう
仏教ーー>ぶっきょう
裏腹ーー>うらはら。反対する、相反すること。となりのこと。
発掘ーー>はっくつ。見つけ出す。。
付帯ーー>つけおび。付帯業務。
下地ーー>したじ。きそ、そざい。

2013/10/03