Linux 性能监测:介绍

  看了某某教程、读了某某手册,按照要求改改某某设置、系统设定、内核参数就认为做到系统优化的想法很傻很天真:)系统优化是一项复杂、繁琐、长期的 工作,优化前需要监测、采集、测试、评估,优化后也需要测试、采集、评估、监测,而且是一个长期和持续的过程,不是说现在优化了,测试了,以后就可以一劳 永逸了,也不是说书本上的优化就适合眼下正在运行的系统,不同的系统、不同的硬件、不同的应用优化的重点也不同、优化的方法也不同、优化的参数也不同。性 能监测是系统优化过程中重要的一环,如果没有监测、不清楚性能瓶颈在哪里,优化什么呢、怎么优化呢?所以找到性能瓶颈是性能监测的目的,也是系统优化的关 键。系统由若干子系统构成,通常修改一个子系统有可能影响到另外一个子系统,甚至会导致整个系统不稳定、崩溃。所以说优化、监测、测试通常是连在一起的, 而且是一个循环而且长期的过程,通常监测的子系统有以下这些: CPU Memory IO Network 这些子系统互相依赖,了解这些子系统的特性,监测这些子系统的性能参数以及及时发现可能会出现的瓶颈对系统优化很有帮助。 应用类型 不同的系统用途也不同,要找到性能瓶颈需要知道系统跑的是什么应用、有些什么特点,比如 web server 对系统的要求肯定和 file server 不一样,所以分清不同系统的应用类型很重要,通常应用可以分为两种类型: IO 相关,IO 相关的应用通常用来处理大量数据,需要大量内存和存储,频繁 IO 操作读写数据,而对 CPU 的要求则较少,大部分时候 CPU 都在等待硬盘,比如,数据库服务器、文件服务器等。 CPU 相关,CPU 相关的应用需要使用大量 CPU,比如高并发的 web/mail 服务器、图像/视频处理、科学计算等都可被视作 CPU 相关的应用。 看看实际中的例子,第1个是文件服务器拷贝一个大文件时表现出来的特征: $ vmstat 1 procs ———–memory———- —swap– —–io—- –system– —–cpu—– r b swpd free buff cache si so…

Continue Reading

Linux Shell 编程(转)

零、shell中的内部变量: 1.    $?:    表示shell命令的返回值. 2.    $$:    表示当前shell的pid. 3.    $!:    最后一个放入后台作业的PID值. 4.    $0:    表示脚本的名字. 5.    $1–$9,${10}: 表示脚本的第一到九个参数,和第十个参数. 6.    $#:    表示参数的个数. 7.    $*,$@: 表示所有的参数. 两者的区别如下: //都是双引号惹的祸^-^ /> set 'apple pie' pears peaches /> for i in $* >  do >  echo $i >  done        apple        pie        pears        peaches /> set 'apple…

Continue Reading

lftp详解及应用

用ftp的get命令无法下载文件夹,这个时候可以用lftp的mirror命令:   基本用法 1、yum -y install lftp //安装lftp 2、lftp 192.168.1.124 //(或直接输入ftp的网址)登录远程ftp 3、user root //输入ftp用户名root (匿名ftp不用输入用户名和密码) 4、111111 //输入ftp密码(不回显) 5、mirror jsweb /opt/www  //将ftp上的jsweb(文件夹名称)下载到本地的/opt/www   lftp mirror的高级应用举例 mirror –delete –only-newer –verbose work /opt/bak/ 自动备份服务器work文件夹,到本地opt/bak文件夹下,并且删除已经不存在的文件,并且只下载最新的文件,再给出详细的输出。 用 lftp 的 -e 选项,把命令直接接在 lftp 之后: lftp -u username,password -e”mirror –delete –only-newer –verbose /work bak/” ftpIP 也可以用 at 选项指定备份的时间: lftp at 01:00 -u username,password…

Continue Reading

linux中修改网卡设备名称

如果测试机器或服务器上有多个网卡,可能由于不同网卡的特性不同而需要启用/禁用网卡控制器,调整的过程可能需要调整网卡的名称,如eth1改成eth0,自己调整了两三次,把经验分享一下: 1.shutdown 相应接口,将 /etc/sysconfig/network-scripts/ifcfg-eth0中的 DEVICE=eth0 HWADDR=00:1e:ec:0f:79:f6 修改或添加,注意mac地址和device名称要和对应的配置文件名称中的eth0对应。 并将下面文件中修改成和上述一致 /etc/udev/rules.d/70-persistent-net.rules # PCI device 0x14e4:0x1713 (tg3) SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”00:1e:ec:0f:79:f6″, ATTR{type}==”1″, KERNEL==”eth*”, NAME=”eth0″ # PCI device 0x14e4:0x1713 (tg3) SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”00:1e:ec:0f:79:f7″, ATTR{type}==”1″, KERNEL==”eth*”, NAME=”eth1″ 2. service udev-post stop; service udev-post start 3. ifup eth0/eth1

Continue Reading

调整内核printk的打印级别

有时调试内核模块,打印信息太多了,可以通过修改/proc/sys/kernel/printk文件内容来控制。默认设置是6   4   1   7 # cat /proc/sys/kernel/printk 7       4       1      7 该文件有四个数字值,它们根据日志记录消息的重要性,定义将其发送到何处。关于不同日志级别的更多信息,请查阅syslog(2)联机帮助。上面显示的4个数据分别对应: 控制台日志级别:优先级高于该值的消息将被打印至控制台 默认的消息日志级别:将用该优先级来打印没有优先级的消息 最低的控制台日志级别:控制台日志级别可被设置的最小值(最高优先级) 默认的控制台日志级别:控制台日志级别的缺省值   数值越小,优先级越高 其实这四个值是在kernel/printk.c 中被定义的,如下: int console_printk[4] = { DEFAULT_CONSOLE_LOGLEVEL,       /* console_loglevel */ DEFAULT_MESSAGE_LOGLEVEL,       /* default_message_loglevel */ MINIMUM_CONSOLE_LOGLEVEL,     /* minimum_console_loglevel */ DEFAULT_CONSOLE_LOGLEVEL,       /* default_console_loglevel */ }; 内核通过printk() 输出的信息具有日志级别,日志级别是通过在printk() 输出的字符串前加一个带尖括号的整数来控制的,如printk(“<6>Hello, world!\n”);。内核中共提供了八种不同的日志级别,在 linux/kernel.h 中有相应的宏对应。 #define KERN_EMERG  “<0>”   /* systemis unusable */ #define KERN_ALERT  “<1>”   /* actionmust be taken immediately */ #define KERN_CRIT    “<2>”   /*critical conditions */ #define KERN_ERR     “<3>”   /*…

Continue Reading

vim命令大全与实战

一、移动光标 1、左移h、右移l、下移j、上移k 2、向下翻页ctrl + f,向上翻页ctrl + b 3、向下翻半页ctrl + d,向上翻半页ctrl + u 4、移动到行尾$,移动到行首0(数字),移动到行首第一个字符处^ 5、移动光标到下一个句子 ),移动光标到上一个句子( 6、移动到段首{,移动到段尾} 7、移动到下一个词w,移动到上一个词b 8、移动到文档开始gg,移动到文档结束G 9、移动到匹配的{}.().[]处% 10、跳到第n行 ngg 或 nG 或 :n 11、移动光标到屏幕顶端H,移动到屏幕中间M,移动到底部L 12、读取当前字符,并移动到本屏幕内下一次出现的地方 * 13、读取当前字符,并移动到本屏幕内上一次出现的地方 # 二、查找替换 1、光标向后查找关键字 #或者g# 2、光标向前查找关键字 或者g 3、当前行查找字符 fx, Fx, tx, Tx 4、基本替换 :s/s1/s2 (将下一个s1替换为s2) 5、全部替换 :%s/s1/s2 6、只替换当前行 :s/s1/s2/g 7、替换某些行 :n1,n2 s/s1/s2/g 8、搜索模式为 /string,搜索下一处为n,搜索上一处为N 9、制定书签 mx, 但是看不到书签标记,而且只能用小写字母…

Continue Reading

CentOS 6.3下Samba服务器的安装与配置(转)

一、简介 Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的网络通讯协议,后来Samba将SMB通信协议应用到了Linux系统上,就形成了现在的Samba软件。后来微 软又把 SMB 改名为 CIFS(Common Internet File System),即公共 Internet 文件系统,并且加入了许多新的功能,这样一来,使得Samba具有了更强大的功能。 Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux 之间的文件共享,也可以用于Linux与Linux之间的资源共享,由于NFS(网络文件系统)可以很好的完成Linux与Linux之间的数据共享,因 而 Samba较多的用在了Linux与windows之间的数据共享上面。 SMB是基于客户机/服务器型的协议,因而一台Samba服务器既可以充当文件共享服务器,也可以充当一个Samba的客户端,例如,一台在 Linux 下已经架设好的Samba服务器,windows客户端就可以通过SMB协议共享Samba服务器上的资源文件,同时,Samba服务器也可以访问网络中 其它windows系统或者Linux系统共享出来的文件。 Samba在windows下使用的是NetBIOS协议,如果你要使用Linux下共享出来的文件,请确认你的windows系统下是否安装了NetBIOS协议。 组成Samba运行的有两个服务,一个是SMB,另一个是NMB;SMB是Samba 的核心启动服务,主要负责建立 Linux Samba服务器与Samba客户机之间的对话, 验证用户身份并提供对文件和打印系统的访问,只有SMB服务启动,才能实现文件的共享,监听139 TCP端口;而NMB服务是负责解析用的,类似与DNS实现的功能,NMB可以把Linux系统共享的工作组名称与其IP对应起来,如果NMB服务没有启 动,就只能通过IP来访问共享文件,监听137和138 UDP端口。 例如,某台Samba服务器的IP地址为10.0.0.163,对应的工作组名称为davidsamba,那么在Windows的IE浏览器输入下面两条指令都可以访问共享文件。其实这就是Windows下查看Linux Samba服务器共享文件的方法。 \\10.0.0.163\共享目录名称 \\davidsamba\共享目录名称 Samba服务器可实现如下功能:WINS和DNS服务; 网络浏览服务; Linux和Windows域之间的认证和授权; UNICODE字符集和域名映射;满足CIFS协议的UNIX共享等。 二、系统环境 系统平台:CentOS release 6.3 (Final) Samba版本:samba-3.5.10-125.el6.x86_64 Samba Server IP:10.0.0.163 防火墙已关闭/iptables: Firewall is not running. SELINUX=disabled 三、安装Samba服务…

Continue Reading

centos6.0配置FTP服务器

一、系统安全放行配置 (1)开放21端口 # service iptables stop //关闭iptables # iptables -A INPUT -p tcp –dport 21 -j ACCEPT (2)防火墙配置VSFTPD 被动端口开放: # iptables -A INPUT -p tcp –dport 30000:30100 -j ACCEPT //端口30000-30100只是举例,可以根据实际情况自定义 # service iptables save //保存iptables配置 # service iptables restart //重启防火墙 (3)SELINUX永久开启FTP支持 # setsebool -P ftp_home_dir 1 亦可立刻关闭 SELINUX: # /usr/sbin/setenforce 0 但是文艺青年一般都是会开启selinux的! 二、vsftpd的安装和配置 # rpm…

Continue Reading

dd命令创建指定大小的文件

dd命令可以轻易实现创建指定大小的文件,如 dd if=/dev/zero of=test bs=1M count=1000 会生成一个1000M的test文件,文件内容为全0(因从/dev/zero中读取,/dev/zero为0源) 但是这样会实际写入硬盘,文件产生速度取决于硬盘读写速度,如果欲产生超大文件,速度很慢 在某种场景下,我们只想让文件系统认为存在一个超大文件在此,但是并不实际写入硬盘 则可以 dd if=/dev/zero of=test bs=1M count=0 seek=100000 此时创建的文件在文件系统中的显示大小为100000MB,但是并不实际占用block,因此创建速度与内存速度相当 seek的作用是跳过输出文件中指定大小的部分,这就达到了创建大文件,但是并不实际写入的目的 因为不实际写入硬盘,所以你在容量只有10G的硬盘上创建100G的此类文件都是可以的

Continue Reading