发布新日志

  • Linux 定时关机设置-sybase和web

    2011-06-01 16:59:45

    sybase

    1.在/usr/local/目录下创建shutdown_sybase.sh文件,内容为:

    #!/bin/bash
    ##shutdown_sybase
    ##先关闭sybase服务,等10分钟后关机。
    su - sybase -c 'isql -Szdsoft -Usa -P123456'<<EOF
    shutdown SYB_BACKUP
    go
    shutdown with nowait
    go
    exit
    EOF
     
    /sbin/shutdown -h 10

    注意赋权。

    2.执行命令:crontab -u root -e,编辑以下内容后保存退出。

    00 23 * *0,4 /bin/sh /usr/local/shutdown_sybase.sh
    web

    只需执行命令:crontab -u root -e,编辑以下内容后保存退出。

    00 23 * *0,4 /sbin/shutdown -h now
  • Linux 定时关机和自启动设置-oracle服务器

    2011-05-31 14:09:41

  • sar/iostat/vmstat

    2011-01-13 14:50:52

    安装过程见http://www.51testing.com/?uid-188107-action-viewspace-itemid-225762

    sar:既能收集系统CPU、硬盘网络设备等动态数据,更能查看二进制数据文件等。

    用法:

    sar [参数选项] t [n] [-o file] t为采样间隔秒,必须有,n为采样次数,可选,默认值1

    参数说明:

    -A 显示所有历史数据,通过读取/var/log/sar 目录下的所有文件,并把它们分门别类的显示出来;
    -b 通过设备的I/O中断读取设置的吞吐率;
    -B 报告内存或虚拟内存交换统计;
    -c 报告每秒创建的进程数;
    -d 报告物理块设备(存储设备)的写入、读取之类的信息,如果直观一点,可以和p参数共同使用,-dp
    -f 从一个二进制的数据文件中读取内容,比如 sar -f filename
    -n 分析网络设备状态的统计,后面可以接的参数有DEVEDEVNFSNFSDSOCK等。比如-n DEV
    -o 把统计信息以二进制格式写入一个文件,比如 -o filename
    -u 报告CPU利用率的参数;
    -P
    报告每个处理器应用统计,用于多处理器机器,并且启用SMP内核才有效;
    -p 显示友好设备名字,以方便查看,也可以和-d -n 参数结合使用;

    -r 内存和交换区占用统计;
    -t 这个选项对从文件读取数据有用,如果没有这个参数,会以本地时间为标准读出;
    -v 报告inode, 文件或其它内核表的资源占用信息;
    -w 报告系统交换活动的信息; 每少交换数据的个数;
    -W 报告系统交换活动吞吐信息;
    -x 用于监视进程的,在其后要指定进程的PID值;
    -X 用于监视进程的,但指定的应该是一个子进程ID

    CPU利用率:

    [root@B1943 ~]# sar -u 1 5
    Linux 2.6.18-53.el5 (B1943)  2011年01月13日

    14时58分08秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
    14时58分09秒     all      0.00      0.00      0.00      0.00      0.00    100.00
    14时58分10秒     all      0.50      0.00      0.00      0.00      0.00     99.50
    14时58分11秒     all      0.00      0.00      0.00      0.00      0.00    100.00
    14时58分12秒     all      0.00      0.00      0.00      0.00      0.00    100.00
    14时58分13秒     all      0.00      0.00      0.00      0.00      0.00    100.00
    Average:        all      0.10      0.00      0.00      0.00      0.00     99.90

    %usr cpu用户模式下时间(百分比)
    %sys cpu
    系统模式下时间(百分比)

    %nice 表示CPU在用户层优先级的百分比,0表示正常;
    %iowait cpu
    等待输入/输出完成(时间百分比)
    %idle cpu
    空闲时间(百分比)

    将动态信息写入文件中:

    [root@localhost ~]# sar -u 1 5 > sar000.txt
    [root@localhost ~]# cat sar000.txt

    也可以输出到一个二进制的文件中,然后通过sar来查看;

    [root@localhost ~]# sar -u 1 5 -o sar002
    [root@localhost ~]# sar -f sar002

    网络设备的吞吐情况:

    [root@B1943 ~]# sar -n DEV 2 5 |grep eth0
    15时04分12秒      eth0      6.97      1.00      0.54      0.07      0.00      0.00      0.00
    15时04分14秒      eth0      7.50      1.50      0.71      0.16      0.00      0.00      0.00
    15时04分16秒      eth0      6.00      1.50      0.43      0.16      0.00      0.00      0.00
    15时04分18秒      eth0      7.50      1.50      0.58      0.16      0.00      0.00      0.00
    15时04分20秒      eth0      7.50      1.50      0.50      0.16      0.00      0.00      0.00
    Average:         eth0      7.09      1.40      0.55      0.14      0.00      0.00      0.00

    IFACE设备名;
    rxpck/s每秒收到的包;
    rxbyt/s每秒收到的所有包的体积;
    txbyt/s每秒传输的所有包的体积;
    rxcmp/s每秒收到数据切割压缩的包总数;
    txcmp/s每秒传输的数据切割压缩的包的总数;
    rxmcst/s:每秒收到的多点传送的包。
    iostat:
     

    用法:

    iostat [ -c | -d ] [ -k ] [ -t ] [ -V ] [ -x [ device ] ] [ interval [ count ] ] > outputfile

    其中,-c为汇报CPU的使用情况;-d为汇报磁盘的使用情况;-k表示每秒按kilobytes字节显示数据;-x可获得更多信息;interval指每次统计间隔的时间;count指按照这个时间间隔统计的次数。

    [root@B1943 ~]# iostat -d -k -x
    Linux 2.6.18-53.el5 (B1943)  2011年01月13日

    Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
    sda               0.02     4.10    0.11    1.77     2.11    23.45    27.24     0.00    1.15   0.63   0.12

    rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge);

    wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。

    rsec/s:每秒读取的扇区数;

    wsec/:每秒写入的扇区数。

    r/sThe number of read requests that were issued to the device per second

    w/sThe number of write requests that were issued to the device per second

    await:每一个IO请求的处理的平均时间(单位是微秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。

    %util:在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%

    所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满

    负荷运行了(当然如果是多磁盘,即使%util100%,因为磁盘的并发能力,所以磁

    盘使用未必就到了瓶颈)。

    [root@B1943 ~]# iostat -d -k
    Linux 2.6.18-53.el5 (B1943)  2011年01月13日

    Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
    sda               1.88         2.11        23.45    1122861   12458568

    tps:该设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。一次传输意思是一次I/O请求。多个逻辑请求可能会被合并为一次I/O请求一次传输请求的大小是未知的。

    kB_read/s:每秒从设备(drive expressed)读取的数据量;

    kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;

    kB_read:读取的总数据量;

    kB_wrtn:写入的总数量数据量;这些单位都为Kilobytes

    iostat -cdx 1 >outfile

    cat outfile

     

    vmstat: 也可以输出到文件vmstat > outputfile

    [root@B1943 ~]# 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      0 4812568 199472 2125952    0    0     1    12   18   10  0  0 100  0  0

    Procs
    r: The number of processes waiting for run time.
    b: The number of processes in uninterruptable sleep.
    w: The number of processes swapped out but otherwise runnable.

    Memory
    swpd: the amount of virtual memory used (kB).
    free: the amount of idle memory (kB).
    buff: the amount of memory used as buffers (kB).

    Swap
    si: Amount of memory swapped in from disk (kB/s).
    so: Amount of memory swapped to disk (kB/s).

    IO
    bi: Blocks sent to a block device (blocks/s).
    bo: Blocks received from a block device (blocks/s).

    System
    in: The number of interrupts per second, including the clock.
    cs: The number of context switches per second.

    CPU
    These are percentages of total CPU time.
    us: user time
    sy: system time
    id: idle time

  • 文件句柄数Too many open files

    2011-01-07 16:32:35

    问题描述:java.io.IOException: Too many open files

    [root@B1943 ~]# ulimit -a(查看文件句柄数)
    core file size          (blocks, -c) 0
    data seg size           (kbytes, -d) unlimited
    max nice                        (-e) 0
    file size               (blocks, -f) unlimited
    pending signals                 (-i) 71680
    max locked memory       (kbytes, -l) 32
    max memory size         (kbytes, -m) unlimited
    open files                      (-n) 1024
    pipe size            (512 bytes, -p) 8
    POSIX message queues     (bytes, -q) 819200
    max rt priority                 (-r) 0
    stack size              (kbytes, -s) 10240
    cpu time               (seconds, -t) unlimited
    max user processes              (-u) 71680
    virtual memory          (kbytes, -v) unlimited
    file locks                      (-x) unlimited

    [root@B1943 ~]# ulimit -n
    1024

    ulimit应该是用户的限制,如果太小则修改大小:ulimit -n 2048

    如果要重启后仍生效,则可修改/etc/security/limits.conf,后面加上:* - nofile 2048
    (此时type用“-”,表示hard和soft同时设定。domain设置为星号代表全局,也可以针对不同的用户做出不同的限制)

    /proc/sys/fs/file-max应该是系统级的限制

    [root@B1943 ~]# cat /proc/sys/fs/file-max(查看)

    8192

    [root@B1943 ~]# echo 65536 > /proc/sys/fs/file-max(修改)

    如果要重启后仍生效,则可修改/etc/sysctl.conf,加上:fs.file-max = 65536

    另外还有一个,/proc/sys/fs/file-nr

    只读,可以看到整个系统目前使用的文件句柄数量

     

     

  • JDK自带工具jps,jstat,jmap,jconsole

    2010-12-29 11:21:30

    jps

    与ps命令类似,用来显示本地的java进程,查看本地运行着几个java应用,并显示进程号。

    [root@B1943 ~]# jps(只显示进程号)
    23813 Jps
    710 Bootstrap
    792 Bootstrap
    [root@B1943 ~]# jps -v(显示jvm参数)
    23852 Jps -Denv.class.path=.:/usr/jdk1.6.0_21/lib/dt.jar:/usr/jdk1.6.0_21/lib/tools.jar -Dapplication.home=/usr/jdk1.6.0_21 -Xms8m
    710 Bootstrap -Xms2048m -Xmx2048m -XX:NewRatio=2 -XX:PermSize=256M -XX:MaxPermSize=512M -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/root/zhusj/apache-tomcat-6.0.18_1/conf/logging.properties -Dcom.sun.management.jmxremote.port=8799 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.endorsed.dirs=/root/zhusj/apache-tomcat-6.0.18_1/endorsed -Dcatalina.base=/root/zhusj/apache-tomcat-6.0.18_1 -Dcatalina.home=/root/zhusj/apache-tomcat-6.0.18_1 -Djava.io.tmpdir=/root/zhusj/apache-tomcat-6.0.18_1/temp
    jstat
    很强大的监视jvm内存工具,可用来查看堆内各个部分的使用量,以及加载类的数量。使用时,需指定java进程号。一般使用 -gcutil 查看gc情况。
    [root@B1943 ~]# jstat -class 710(显示加载class的数量,及所占空间等信息)
    Loaded  Bytes  Unloaded  Bytes     Time  
     11242 24450.0       41    65.8      30.25
    jstat -compiler pid:显示VM实时编译的数量等信息。
    jstat -gc pid:可以显示gc的信息,查看gc的次数及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。
    jstat -gccapacity pid:可以显示VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。
    S0  — Heap上的 Survivor space 0 区已使用空间的百分比
    S1  — Heap上的 Survivor space 1 区已使用空间的百分比
    E   — Heap上的 Eden space 区已使用空间的百分比
    O   — Heap上的 Old space 区已使用空间的百分比
    P   — Perm space 区已使用空间的百分比
    YGC — 从应用程序启动到采样时发生 Young GC 的次数
    YGCT– 从应用程序启动到采样时 Young GC 所用的时间(单位秒)
    FGC — 从应用程序启动到采样时发生 Full GC 的次数
    FGCT– 从应用程序启动到采样时 Full GC 所用的时间(单位秒)
    GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒)

    [root@B1943 ~]# jstat -gcutil 710(gc的统计信息)
      S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT  
      0.00  15.69  80.03  38.70  33.30    123   21.421     1    0.817   22.238
    [root@B1943 ~]# jstat -gcutil 710 1000 5(每1000毫秒打印一次,共5次)

    jmap

    可以输出某个java进程内存内对象的情况,甚至可以将VM 中的heap,以二进制输出成文本。

    [root@B1943 ~]# jmap -histo 710 >mem.txt(可使用文本对比工具对比出GC回收了哪些对象)
    该文件中内容如:
    num #instances #bytes class name
    ----------------------------------------------
    4:  1202692  67350752 java.io.ObjectStreamClass$WeakClassKey
    [root@B1943 ~]# jmap -dump:format=b,file=mem.bin 710(将该进程heap输出到mem.bin文件中,使用二进制形式。该文件可供其他分析工具使用,如eclipse memory analyser)
    注:jmap使用的时候jvm是处在假死状态的,只能在服务瘫痪的时候为了解决问题来使用,否则会造成服务中断
    jconsole
    一个java GUI监视工具,可以以图表化的形式显示各种数据。并可通过远程连接监视远程的服务器VM,略。
  • Jsonsole监视tomcat

    2010-12-23 14:03:25

    配置

    1.修改bin/catalina.sh文件

    确认端口8799没被占用:netstat -a | grep -i 8799 查看端口占有情况

    CATALINA_OPTS="-Dcom.sun.management.jmxremote.port=8799

    -Dcom.sun.management.jmxremote.authenticate=false

    -Dcom.sun.management.jmxremote.ssl=false"

    2.重启tomcat后就能用jconsole监视了

    可能问题:jconsole无法连接

    解决:

    1.Linux服务器执行hostname -i,一定要是该机器的ip地址,否则修改/etc/hosts文件;

    2.修改hosts文件前确认该机器的hostname

    cat /etc/sysconfig/network

    NETWORKING=yes
    NETWORKING_IPV6=no
    HOSTNAME=B1943(这个就是hostname)

    也可执行hostname(或uname -n)命令查看主机名

    3.然后修改hosts文件,加上

    192.168.1.62 B1943 //真实ip和主机名(有时候要放在最前面)

     

  • (备忘)集群部署注意点

    2010-12-17 16:13:44

  • 监控工具sysstat安装

    2010-12-17 16:05:50

    sysstat:

    linux系统自带的功能全面的性能分析工具。RedHat Enterprise Linux Server 自身的发行版就带了这个工具安装包的。可以从发行光盘中的找到rpm安装包,或者从http://pagespersoorange.fr/sebastien.godard/download.html 页面下载tar包安装。

    安装步骤:
     
    检查是否安装了sysstat:
    [root@a1_145 ~]#which iostat
    /usr/bin/which: no iostat in (/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/sybdump/mongodb-linux-x86_64-1.6.2/bin:/root/bin)
    说明没有安装。
    /usr/bin/iostat
    说明已安装。
     
    安装的时候需要开发工具包,如gcc make等。
    直接tar有问题,就先解压了:gzip -d sysstat-9.1.6.tar.gz
    [root@a1_145 ~]# tar -zxvf sysstat-9.1.6.tar
    [root@a1_145 ~]# cd sysstat-9.1.6
    [root@a1_145 sysstat-9.1.6]# ./configure
    [root@a1_145 sysstat-9.1.6]# make && make install
    完毕!

    每两秒监控输出磁盘使用情况:

    # iostat  -d -k 2
    Linux 2.6.18-194.el5 (ora208)   07/16/2010      _x86_64_        (1 CPU)

    Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
    sda               8.58       142.06       122.23   31504830   27107903
    hdc               0.00         0.00         0.00         76          0

  • (备忘)linux解压缩-tar

    2010-12-17 15:35:32

  • loadrunner中调用sha1算法

    2010-08-04 19:03:29

    参考《SHA-1 hash for LoadRunner

    http://ptfrontline.wordpress.com/2010/03/02/sha-1-hash-for-loadrunner/

    示例:

    #include "lr_sha1.c"

    Action()
    {
     sha1_hash("passpord","_sha1");
     lr_output_message( "SHA1 Hash: %s",lr_eval_string("{_sha1}"));

     return 0;
    }

    执行后,加密成功!

    附件是lr_sha1.c,放到脚本目录中。

Open Toolbar