MySql的一些性能监控方法

作者:Lightning@小宝 发布时间:October 30, 2009 分类:MySQL备份&优化&架构

一,获取mysql用户下的进程总数

ps -ef | awk '{print $1}' | grep "mysql" | grep -v "grep" | wc-1

二,主机性能状态

# uptime
[root@ ~]# uptime
 13:05:52 up 53 days, 52 min,  1 user,  load average: 0.00, 0.00, 0.00
三,CPU使用率

# top

# vmstat

四,磁盘IO量

# vmstat 或 # iostat
五,swap进出量[内存]

# free
六,数据库性能状态
(1)QPS(每秒Query量)
QPS = Questions(or Queries) / seconds
mysql > show /*50000 global */ status like 'Question';

(2)TPS(每秒事务量)
TPS = (Com_commit + Com_rollback) / seconds
mysql > show status like 'Com_commit';
mysql > show status like 'Com_rollback';

(3)key Buffer 命中率
key_buffer_read_hits = (1-key_reads / key_read_requests) * 100%
key_buffer_write_hits = (1-key_writes / key_write_requests) * 100%

mysql> show status like 'Key%';

(4)InnoDB Buffer命中率
innodb_buffer_read_hits = (1 - innodb_buffer_pool_reads / innodb_buffer_pool_read_requests) * 100%

mysql> show status like 'innodb_buffer_pool_read%';

(5)Query Cache命中率
Query_cache_hits = (Qcahce_hits / (Qcache_hits + Qcache_inserts )) * 100%;

mysql> show status like 'Qcache%';
(6)Table Cache状态量
mysql> show status like 'open%';

(7)Thread Cache 命中率
Thread_cache_hits = (1 - Threads_created / connections ) * 100%

mysql> show status like 'Thread%';

mysql> show status like 'Connections';

(8)锁定状态
mysql> show status like '%lock%';

(9)复制延时量
mysql > show slave status

(10) Tmp Table 状况(临时表状况)
mysql > show status like 'Create_tmp%';
(11) Binlog Cache 使用状况
mysql > show status like 'Binlog_cache%';

(12) Innodb_log_waits 量
mysql > show status like 'innodb_log_waits';

开源监控软件
一,RRDTool
二,Nagios
三,MRTG
四,Cacti

轻量级的web服务器

作者:Lightning@小宝 发布时间:October 30, 2009 分类:web服务器方向

虽然轻量级 Web 服务器有很多共同之处,但是各有各的不同。大多数轻量级 Web 服务器是用 C 编写的,但是实践证明,有些其他实现语言也可以成功地用于实现服务器,对此我已经做了实验,这些语言包括 Erlang、Java、Lisp、Lua、Perl、Python 和 Tcl。如果其中有您喜欢的语言,那么也许可以找到适合您的 Web 服务器。

由于很多特定的原因,您可能会将目光投向某种 “不常见” 的语言:

  • 教学:使用轻量级 Web 服务器来制定一个重要、但是并不太大的目标。这是获得使用某种语言的经验的好方法。
  • 虽然用 C 编写的轻量级 Web 服务器大小为 10-50 KB,更高级的语言有 100 KB 到数 MB 的运行时,但整个 Web 服务器的源文件可能只占几千个字节。这种 Web 服务器占用的空间很小,因此比 Apache 更易于与技术伙伴共享。
  • 更高级的语言可以使实验更吸引人 —— 例如,添加一个新的 HTTP/1.1 特性可能只需几行源代码。这些轻量级服务器是非常方便的实验材料。
  • 将 HTTP 服务器添加到已有的、用高级语言编写的应用程序中只需增加几行源代码。

Athana 可以作为这些主题的例子。它是用 Python 编写的 Web 服务器。它支持 HTTP 多部分(上传)、会话、 cookie 等。从 0.2.1 版开始,Athana 一直被编写在一个单独的、精心组织的源文件中。

如前所述,不同的轻量级 Web 服务器有着不同的优点,它们或多或少独立于编程语言。所有轻量级 Web 服务器都比 Apache 更小、更易于配置。与 Apache 相比,有些轻量级 Web 服务器更快,有些则快得多。有些则强调安全性、重负载下的从容性、可扩展性或者内存占有量。在任何情况下,都可以以一种不适用于 Apache 的方式彻底地理解这些服务器。

哪些特定的产品使这些可能性成为现实?即使只留意 “轻量级” 服务器,面对的也是一个很大的难于管理的产品集合。不过可以将它们按子类来划分:超轻型、关注安全型、支持特定语言型等等。

我特别喜欢其中的超轻型 Web 服务器,它们比 Apache 小得多。如此小的应用程序可以直接记住,系统地、严密地加以考虑,以证明 它们的安全性或可伸缩性。小型 Web 服务器包括:

  • Cheetah Server,用不到一千行的 C 代码编写而成。
  • DustMote,一个非常 小的 Web 服务器,用一个大约 3000 字节的 Tcl 源文件实现。
  • fnord,大小取决于平台和配置,不超过 20K。虽然很小,但是它支持虚拟主机、CGI 和 keep-alive。
  • ihttpd,使用不到 800 行的 C 代码,包括 CGI,并通过 inetd 提供页面。
  • im-httpd,非常小的服务器 —— 只有大约 7 KB,链接到 glibc。而且它也非常快。
  • mattows,支持 CGI,只有 600 行 C 代码。
  • Scrinchy,虽然很小,不到 30KB,但是支持多种脚本编制语言,包括一种特殊用途的、基于栈的 Sy 脚本语言。
  • ZWS 演示了一个即使是使用 500 多行带足够注释的 zsh (!) 编写的应用程序 —— 在这里是一个 HTTP 0.9+ 服务器 —— 也可以有多强大。

体积小并不妨碍这些服务器被正式使用。例如,fnord 可以处理数千个同时进行的连接。

也许轻量级作为一个类别最令人印象深刻的成就是高性能服务器:

  • cghttpd 是一个小型 Web 服务器,它被理解为使用 2.6 系列内核中可用的异步功能的一个试验品。
  • darkhttpd 是一个快速的、单线程的 HTTP/1.1 服务器。
  • Gatling 是为高性能设计的。它的特性包括 FTP、IPv6、虚拟主机、CGI 等。
  • Kernux 是一个 Linux 内核模块,它实现了一个 HTTP 守护进程。
  • lighttpd 是使用率排名第五的 Web 服务器(排名还在上升)。它为很多同时进行的连接进行了优化:“典型的场景是使用 lighttpd 作为一个下载(off-load)服务器,以提供静态内容……”
  • Nginx 当前最流行的轻量级服务器。
  • LiteSpeed Web Server 是一款轻量级商业 Web 服务器,强调性能和安全性。 LiteSpeed Technologies 公司宣传为静态内容提速了 6 倍,在解释页面方面也有一定的提高。
  • Miniature JWS,也称 tjws,它是基于 Java 的 Web 服务器,可以处理 servlet、JSP 和数千个并发连接,而大小只有 77 KB。它的作者声称它 “比 Apache 2.x 快 10%”。
  • Yaws 是用 Erlang 编写的一款高性能 HTTP/1.1 服务器。

有些 Web 服务器被实现为类或库,以便嵌入 到较大的应用程序中。 在这些 Web 服务器当中,我发现特别有趣的有:

  • EHS —— “嵌入式 HTTP 服务器”,被设计为一个 C++ 类,用于嵌入到较大的 C++ 应用程序;还有
  • Embedded TCL Web Server,它是一个很普通的 Web 服务器,支持 SSL 和 Basic Authentication,速度非常快 —— 其作者使它至少与 lighthttpd 和 AOLserver 一样快。它是用不到 100 行 Tcl 编写的。

Python 是几种适合不寻常环境的 Web 服务器的实现语言,这些 Web 服务器包括:

  • cdServer 是一个小型的、用 Python 编写的 HTTP 服务器,它 “被设计用来提供来自 CD-ROM 的(静态)内容” 。它在提供动态内容方面能力有限。我们有几个涉及不受影响的 “live CDs” 的项目,在这些项目中像 cdServer 之类的工具很关键。
  • edna,一款智能的用 Python 编写的 MP3 服务器,它是用 HTTP 实现的。

还有其他一些用 Perl 和其他不出名的语言编写的轻量级 Web 服务器:

  • Camlserv,用 ocaml 编写的一个完整的 Web 服务器,目标是 “高度交互式的 Web 页面”。它由几千行 ocaml 编写而成,其中大部分代码都与 MySQL 和 HTML 的特殊处理有关。
  • dhttpd 用和 Apache 相同的格式记录访问。它支持 CGI,并具有内建的 Perl 解释器、虚拟主机、IPv6、带宽管理和安全性等方面的特性。
  • DNHTTPD 是用 Perl 编写的,用于 UNIX®。它支持虚拟主机、SSL 连接、CGI 等。
  • Jellybean 是用 Perl 编写的基于 HTTP 的 Perl Object Server。
  • lns.http 是一个 Common LISP HTTP/1.1 Web 框架。
  • Mongrel 是用 Ruby 编写的、用于 HTTP 的一个库和服务器。
  • Nanoweb 是用 PHP 编写的一款快速、健壮的 Web 服务器。它宣称具有丰富的特性,包括完全遵从 HTTP/1.1、访问控制、身份验证、虚拟主机、SSL 兼容性等。
  • Naridesh 是用 Perl 编写的 Web 服务器。
  • OpenAngel 是用 Perl 编写的。它强调的重点是安全性。
  • Xavante 是用 Lua 编写的 HTTP/1.1 Web 服务器。
  • XSP 是用 C# 编写的,用于运行 ASP.NET。

有时候您可能需要其他一些用 C 编写的、具有不常见的次要优势的轻量级 Web 服务器:

  • ABYSS 可以在 UNIX 和 Win32 之间移植,其 “目的是成为完全遵从 HTTP/1.1 的 Web 服务器”。它占用的内存很少。
  • Anti-Web HTTPD(也称 “Anti-Web”、“awhttpd” 和 “AW”)是一款单进程、无线程、支持 CGI 的服务器,它强调安全性和简单性。
  • MHTTPD 支持从外部文件或 LDAP 服务器进行的 MHTTPD Basic Authentication。
  • mini-httpd 可以在一个系统线程中处理多个并发请求,但是在主机上占用的内存或 CPU 很少。
  • Naken Web 类似于很多其他的轻量级服务器 —— 它支持 Basic Authentication、静态内容等 —— 但是它的作者将它设计为用于 Webcam 操作,并且在 Gumstix、WRT54GL、OpenWrt 和其他新的平台上运行。
  • Null httpd 是一款多线程的、简单的、可移植的 Web 服务器。
  • Seminole 是一款商业 Web 服务器,内存需求较小,功能较多。
  • thttpd throttle,支持  Basic Authentication 等。

深有感触-思考能力何其重要..

作者:Lightning@小宝 发布时间:October 29, 2009 分类:生活 & 职场

偶不变的个人签名:磨刀不勿砍柴工~! 要有正直、尽责、合作、创新的价值观。
一个偶然看到雪候鸟的这篇博文自己也深有认同,直接拿来主义了。
来源:雪候鸟。
做为一个工程师, 我想没有什么会比思考能力,分析能力更重要的了吧?

诚然, 一个工程师,代码写的很漂亮, 语言功底很深厚, 项目经验很丰富, 都很重要, 但做为一个本质上的人, 做为一个在大多数人眼里认为是”聪明的人”的工程师们, 是否有刻意去培养自己的思考能力呢?

在一个项目开发中, 从发现问题, 到定位问题, 这个时间的持续性, 能反映一个人的分析能力.

从定位问题到找到合理的,不会造成其他影响的解决办法, 这个时间段, 能反映一个人的思考能力.

至于, 解决问题的具体实现, 和这些相比, 那就显得没那么重要了.

“思想最重要”, 做为一个开发者, 更要意识到这一点.

在发现问题的时候, 不要着急的找百度叔叔,google阿姨, 或者身边的同学们, 静下来, 看看你自己是否能做个假设, 这个假设会在以后的情况下, 解释问题可能的原因. 然后去一一验证. 你还年轻, 这点时间, 是很值得花的..
在知道问题原因以后, 起码能知道问题发生在那段逻辑内以后, 如果你不知道怎么解决, 没关系, 大胆的去问吧. 我会很鼓励你去问.

但是, 重要的是, 不要解决问题以后, 就OK了. 你要反思, 你要想透彻了, 否则, 下次遇到这个问题, 你还是会~~

举个例子, 记得我开始做开发的时候, 最让我头疼的, 莫过于”编码”问题了. 数据库, 脚本, 服务器, 客户端, 经常让我在出现乱码的情况下, 无所适从.

那么, 如果是你, 你会这样做么:

放下问题, 耐心的去从根本学起, 字符集,编码集的相关知识, 去分析数据库和数据库客户端的(mysql)编码规则, 去学习文件的编码集, 等等, 从而在内心透彻的形成一个thread, 下次遇到别人乱码问题, 你就可以在听过问题情况以后, 大胆的推论: 一定是****出现了问题..

正所谓:”磨刀不误砍柴功啊”.

再举个例子, 我之前开始研究PHP源码的时候, 有一定的成果发布出来以后, 很多人都会问: 你是怎么分析的, 用了什么工具, 或者有什么文档.

没有, 好吧, 如果说一定要有, 那就是:vim + grep + “大胆推论,小心验证”, 我知道一个c写的可执行文件, 是从main开始的, 我知道对于mod_php来说, 开始点必然在apache将控制权交给它的那一刻开始, 有了这些, 就可以使用vim徜徉在海一样的代码中, 而不会迷路. 有了这些, 不就足够了么?

小说Mochiweb

作者:Lightning@小宝 发布时间:October 26, 2009 分类:Python/Java/Erlang学习

想说的是对Mochiweb的感受。

1、Mochiweb相当于Twisted.web,功能强大而用法简单

做到这一点并非易事。inets功能肯定很强,但要用它做应用服务器,必须写许许多多东西,使用起来麻烦。

Yaws有一堆现成的工具,功能也很强,但它的用法复杂死板,要以学习半个Erlang的工夫去掌握它。

Yaws大致相当于Python里的Zope。不过,它还没复杂到像Zope那样让人烦。

与inets和Yaws相比,在性能功能和使用代价的比较上,Mochiweb可算是物美价廉了。

2、Mochiweb的简单用法

以下是我所见到的最简单的用法:

-module(helloweb).

-export([start/0, stop/0]).

start() ->

    mochiweb_http:start([

        {name, ?MODULE},

        {ip, any},

        {port, 6500},

        {loop, fun(Req) ->

            error_logger:info_report([helloweb, {req, Req}]),

            Req:ok({"text/plain", "hello world"})

        end}

    ]).

stop() ->
    mochiweb:stop(?MODULE).

3、Mochiweb适合做些什么

先来说下它不适合做什么。它不是Web框架,不适合模板填空的MVC方式。

除此之外,凡以浏览器为客户端的服务器程序,都可用它开发。

想用用Erlang,又不愿受其太多约束的,可以试试Mochiweb。

关于技术积累的一点思考

作者:Lightning@小宝 发布时间:October 24, 2009 分类:MySQl学习笔记

DBA要创建额外价值以获取更多的回报, 前提是要有丰富的技术积累, 然后努力去运用积累的技术去满足公司或客户的需求. 每个人对于技术积累的理解有所不同, 在这里说一下个人的看法, 个人注重以下四个方面的技术积累.

       基础知识积累, 这一点大伙都没有疑问, 并且谁都很重视, 例如努力阅读技术资料, 积极与人讨论, 上ITPub阅读技术贴子, 参加技术培训等, 都是基础知识积累的有效手段. 有个一年半载的时间, 可以将基础知识学得比较扎实, 可以将DBA的常规工作做得非常好了.

       实践经验积累, 这部份是经过亲自实践的那部份基础知识的集合, 加上在运用基础知识的过程中措索出来的有效解决问题的方法或思维模式的结合体. 这部份其实并没有超出基础知识的范畴, 经常会发现, 一个问题得到解决的手段是靠很基础的知识点, 单独拎出来的话, 绝对是考100分的那种, 但往往解决问题的人不是你. 因此我也认为只完成了基础知识积累是不够的, 还必须经过一层有效的转换, 能够确实去解决问题.

       用户需求积累, 学习技术后最大的乐趣是去帮助别人, 一种是去教导别人, 还有一种是去解决用户的需求. 既然解决需求是技术的最终目的, 那么我们就要去积累用户的需求, 根据用户的需求深化技术领域, 学以致用比较重要. 对于这一点体会比较深刻的是文本导出工具, 居然前前后后历时三年, 还有新的用户需求出来, 不是因为什么OCI编程的基础知识积累驱动了我, 而是用户需求驱动我去持续维护.

       工具脚本积累, 要轻构地发挥DBA价值, 就要有称手的利器, 脚本和工具就是称手的利器. 在DBA的领域里, 虽然有很多前辈们写的现成脚本或工具, 但出自国内的DBA之手的工具还很少, 国内的DBA还是需要关注这一点, 这方面和国外DBA的差距不是一点的大, 虽然我们的基础知识及实践经验比他们丰富, 对比工作过的一个外资公司和一个国内公司, 在工具方面的差别有点让我震憾. SQLULDR, WebChart及oramon为我的DBA工作提供了很大的方便, 让我可以比其他DBA更快更好地了解所要管理的系统的运行特点.

       以上是个人对自身技术积累的一点总结, 希望对大家有点帮助. anysql.net

  1. 页码:
  2. 1
  3. 2
  4. 3
  5. 4
  6. ...
  7. 7
我要报警