Linux性能调优相关的工具

本文只记录我最常使用的一些工具和参数。至于这些工具所有的参数和用法,就不展开了,只需要man一下就有了。

===================

最常用的vmstat:

vmstat 1

======================

用mpstat查看每个cpu的使用情况:

mpstat -P ALL 1

======================
还有sar命令:

sar -P ALL 1

======================
iostat命令:

iostat -x 1

=======================
iptraf查看指定网卡的实时吞吐:

iptraf -d eth0

==============================================
tcpdump,查看来自或目标是去www.baidu.com的请求的数据包。


tcpdump -Sn -i eth1 host www.baidu.com

(-n是打印出点分十进制ip地址,而不用主机名或域名。S参数指定了使用绝对的seq而不是相对seq。 但是这个时候如果访问的是443端口,在抓包的结果中会显示为HTTPS。  -n参数仅仅能避免显示dns lookup主机名,而是显示ip地址。  如果需要显示port number而不是服务名,需要用 -nn)
这个命令只能查看tcp包的信息, 没有包的内容。 如果要查看内容,需要增加 -X 参数。

继续阅读“Linux性能调优相关的工具”

tomcat配置apr,编译tomcat-native

配置APR(apache portable runtime)可以显著提高tomcat的性能。没有正确配置APR的tomcat,在启动日志的开头部分会有这样的提示:

INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path:

正确配置过APR后,改提示将为:

INFO: Loaded APR based Apache Tomcat Native library 1.1.23 using APR version 1.4.6.

配置方法:

下载apr,它的官方网站时http://apr.apache.org/,不在tomcat.apache.org下。

下载apr.tar.gz和apr-util.tar.gz

继续阅读“tomcat配置apr,编译tomcat-native”

解决wordpress自动把半角字符转全角的问题

在wp-includes/default-filters.php中定义了许多filter,其中wptexturize出现了很多次。有它的存在,会带来许多问题。 包括半角字符会自动被转为全角,还有两个中横线“–”会被显示为一个,等等。 这在我们需要粘贴代码片段的时候,是非常不爽的。好在有一个不错的解决办法,是这样:

进入theme目录下,找到function.php,然后在文件末尾添加这么一行:

<?php remove_filter(‘the_content’, ‘wptexturize’); ?>

这样就可以解决掉许多烦人的问题。

java中的CountDownLatch

java中的CountDownLatch是一个倒计数,它位于java.util.concurrent包中。构造一个CountDownLatch对象的时候,可以指定一个倒计数的起点,即指定一个整数的count,每次对象的countDown()方法被调用,count就减一。 在count减到0之前,任何调用了CountDownLatch对象的await方法的对象都被阻塞。
继续阅读“java中的CountDownLatch”

java中的Future

有这样一种需求,需要调用某一个耗时的方法,但又不希望当前线程无限期的等待下去,希望设置一个过期时间,比如设置为2000ms,那么就只等待2000ms,当然如果方法很快就返回了就可以立即继续执行下面的代码。这是一个标准的java的Future。Future位于java.util.concurrent包中。代码示例如下:


    public static void main(String[] args) {

        ExecutorService executor = Executors.newSingleThreadExecutor();

        Future<String> future = executor.submit(new Callable<String>() {
            @Override
            public String call() throws Exception {
                return doStaff();
            }
        });

        // we can do someting here while waiting.

        String result = null;
        try {
            result = future.get(1000, TimeUnit.MILLISECONDS);
        } catch (Exception e) {
            e.printStackTrace();
        }

        System.out.println(result);
        executor.shutdown();
    }

    public static String doStaff() {
        try {
            Thread.sleep(800);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return "this is result.";
    }

在上述的代码中,main方法线程只会等待1000ms。如果再1000ms内doStaff方法没有返回,那么就会抛出一个java.util.concurrent.TimeoutException。关于Future的用法,可以参看java源代码中的注释。此外Future接口还有一个实现是FutureTask,可以参考。
(全文完)

MySQL操作笔记

由于平时碰数据库不是很多,所以很多命令经常会忘记。每次都去google或去翻看文档,也是一件比较耗时的事情。不如把平时遇到的操作,都记录下来,以后可以查询。

嗯,今天要做的事情是把一个名字叫quad的数据库中的一张quad_ignore_user表的结构导出出来,但不需要包括数据:

mysqldump -h10.11.21.57 -uquad -p quad quad_ignore_user –no-data > ignore_user.sql

如果是导出数据,但不要包含表结构,那么需要把–no-data参数换成-t或–no-create-info

继续阅读“MySQL操作笔记”