CentOS/ScientificLinux6でMyNETSを動かす

■CentOS/ScientificLinux6でMyNETSを動かす

ということで、試行錯誤してなんとか動かせたのでメモっておきます。

使ったのはScientificLinux6.7です。
標準ではphp5.3.3、mysql5.1.6ですが、不具合の問題で以下の対応をしました。

・全文検索用にmroongaを使う都合でoracle版mysql5.6導入
・MyNETSで日記投稿時エラーのためphpをius版5.3.29導入

■mroonga&oracle版mysqlインストール

$ yum install -y http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm
$vi /etc/yum/yum.repos.d/groonga.repo
以下修正
/centos/$releasever/ → /centos/6/
$ yum install -y http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
$ yum makecache
$ yum install -y mysql-community-server
$ /sbin/service mysqld start
$ yum install -y mysql-community-mroonga
$ yum install -y groonga-tokenizer-mecab

$mysql -uroot
mysql> show engines;
mroongaを確認

# vi /etc/my.cnf
互換性のため以下を追記
character-set-server = utf8
skip-host-cache
skip-name-resolve
sql_mode=”
old_passwords=0

以下の設定はエラーになるので廃止
default-character-set=
table_cache=
log-slow-querie=
log=

■ius版php導入

# vi /etc/yum.repos.d/ius.repo
以下の内容で作成
[ius]
name=IUS Community Packages for Enterprise Linux 6 – $basearch
baseurl=http://dl.iuscommunity.org/pub/ius/archive/CentOS/6/$basearch
#mirrorlist=http://dmirr.iuscommunity.org/mirrorlist?repo=ius-el6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/IUS-COMMUNITY-GPG-KEY

# cd /etc/pki/rpm-gpg/
# wget http://dl.iuscommunity.org/pub/ius/IUS-COMMUNITY-GPG-KEY

# yum update
# yum install yum-plugin-replace
# yum replace php –replace-with php53u

# vi /etc/php.ini
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED

■全文検索用データ修正
mysqlのダンプデータを以下のように書き換え

 FULLTEXT KEY `fullindex` (`body`) /*!50100 WITH PARSER `mecab` */
) ENGINE=MyISAM AUTO_INCREMENT=100 DEFAULT CHARSET=utf8;
 ↓
 FULLTEXT INDEX (`body`)
) ENGINE=mroonga AUTO_INCREMENT=100 DEFAULT CHARSET=utf8;

たぶん、これでOK

, , ,
とりあえず付けておく無駄ではなかったなまぁまぁ読めたちょっと役に立ったかなかなり良かったかも (まだ評価されていません)
Loading...

■侵入改竄検知システム AIDE を使うメモ
 長くIDSとしてOsirisを使ってきたが時勢に合わなくなってしまったので、CentOS/ScientificLinuxに標準装備されているAIDEを使ってみたメモ。

■インストールと簡単な使い方
[code]# yum install aide

設定編集(コメント充実)
# vi /etc/aide.conf
R = p+l+i+n+u+g+s+m+acl+selinux+xattrs+md5

初期化
# aide -i

比較用DB作成
# cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

比較
# aide -C

通常用途
# aide -u[/code]

■CentOS5系でselinuxで問題が出るケースの設定変更例
[code]# vi /etc/aide.conf

R = p+l+i+n+u+g+s+m+acl+xattrs+md5
L = p+l+i+n+u+g+acl+xattrs
> = p+l+u+g+i+n+S+acl+xattrs

DIR = p+l+i+n+u+g+acl+xattrs

PERMS = p+l+i+u+g+acl

DATAONLY = p+l+n+u+g+s+acl+xattrs+md5+sha256+rmd160+tiger[/code]

■Prelink関連のエラーが出る場合の設定変更例
[code]# sed -i ‘/^PRELINKING=yes$/s/yes/no/’ /etc/sysconfig/prelink
# /usr/sbin/prelink -ua[/code]

■cron用script例
[code]# vi /root/script/aide.sh
#!/bin/bash

/usr/sbin/aide -u
/bin/cp -fr /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz[/code]

■MyNETS用改竄検知設定例(/var/www/sns/wwwをSNS rootとする)
[code]# vi /etc/aide.conf
# MyNETS SNS DIR
/var/www/sns/www NORMAL
!/var/www/sns/www/img
!/var/www/sns/www/var[/code]

■参考リンク
http://pooh.gr.jp/?p=9633
http://blog.cecily.jp/kotou/51/
http://aikotobaha.blogspot.jp/2011/11/rhel-aide.html

, , , ,
とりあえず付けておく無駄ではなかったなまぁまぁ読めたちょっと役に立ったかなかなり良かったかも (まだ評価されていません)
Loading...

■CentOS6/ScientificLinux6にmroongaを導入する
 CentOS6/ScientificLinux6にはmysql5.1.xが導入されていて、日本語全文検索にtritonnが利用できないので、後継プロジェクトになっているmroongaを導入し、日本語全文検索を可能にする。実際の手順はほぼmroongaの公式HPの通り。

 mroonga
 http://mroonga.github.io/ja/

■インストール(mysqlは導入済み)
[code]# rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm

※ScientificLinux6は以下のbaseurl修正を行う
# vi /etc/yum.repos.d/groonga.repo
baseurl=http://packages.groonga.org/centos/6/$basearch/

# yum makecache
# yum install -y mysql-mroonga groonga-tokenizer-mecab

# mysql -u root -p
mysql> show engines;
mysql> INSTALL PLUGIN mroonga SONAME ‘ha_mroonga.so’;[/code]

■動作確認方法
[code]# mysql -u root -p
mysql> show engines;
mysql> use test;
mysql> create table diaries ( id INT primary key auto_increment, content varchar(255), fulltext index (content) ) engine = mroonga default charset utf8;
mysql> INSERT INTO diaries (content) VALUES (“明日の天気は晴れでしょう。”);
mysql> INSERT INTO diaries (content) VALUES (“明日の天気は雨でしょう。”);
mysql> SELECT * FROM diaries WHERE MATCH(content) AGAINST(“晴れ”);[/code]
検索できればOK。
検索スコアでソートは以下で確認。
[code]mysql> INSERT INTO diaries (content) VALUES (“今日は晴れました。明日も晴れるでしょう。”);
mysql> INSERT INTO diaries (content) VALUES (“今日は晴れましたが、明日は雨でしょう。”);
mysql> SELECT *, MATCH (content) AGAINST (“晴れ”) FROM diaries WHERE MATCH (content) AGAINST (“晴れ”) ORDER BY MATCH (content) AGAINST (“晴れ”) DESC;[/code]

■tritonnデータからの移行
 tritonnでダンプしたデータのうち以下の部分を修正する(ストレージモードで利用)

[code] FULLTEXT KEY `fullindex` (`body`) /*!50100 WITH PARSER `mecab` */
) ENGINE=MyISAM AUTO_INCREMENT=100 DEFAULT CHARSET=utf8;
 ↓
 FULLTEXT INDEX (`body`)
) ENGINE=mroonga AUTO_INCREMENT=100 DEFAULT CHARSET=utf8;[/code]
これで新しいDBへインポートすればOK。

, , , ,
とりあえず付けておく無駄ではなかったなまぁまぁ読めたちょっと役に立ったかなかなり良かったかも (まだ評価されていません)
Loading...

CentOS6.xのELrepo Kernel パラメータ差分メモ

■CentOS6.xのELrepo Kernel パラメータ差分メモ
 前記事で導入したELrepoのKernel3.0.68とCentOS6.3のkernel2.6.32のkernelパラメータの差分を取ってみたのでメモしておく。

以下のコマンドで取得したパラメータをそれぞれのカーネルで起動して取得。
[code]# sysctl -a[/code]

kernel情報とdiffを取った結果。
[code]# uname -a
Linux localhost.localdomain 3.0.68-1.el6.elrepo.i686 #1 SMP Mon Mar 4 00:29:41 EST 2013 i686 i686 i386 GNU/Linux

# diff k3s.txt k2s.txt
45c45
< fs.dentry-state = 10635 4581 45 0 0 0 --- > fs.dentry-state = 10781 5172 45 0 0 0
47,51c47,51
< fs.epoll.max_user_watches = 345206 < fs.file-max = 100510 < fs.file-nr = 672 0 100510 < fs.inode-nr = 9825 756 < fs.inode-state = 9825 756 0 0 0 0 0 --- > fs.epoll.max_user_watches = 331776
> fs.file-max = 100902
> fs.file-nr = 672 0 100902
> fs.inode-nr = 9968 218
> fs.inode-state = 9968 218 0 0 0 0 0
56a57
> fs.mqueue.msg_default = 10
57a59
> fs.mqueue.msgsize_default = 8192
63d64
< fs.pipe-max-size = 1048576 70a72 > fs.quota.warnings = 1
85a88
> kernel.exec-shield = 1
87d89
< kernel.ftrace_enabled = 1 94a97 > kernel.kexec_load_disabled = 0
100c103
< kernel.kptr_restrict = 0 --- > kernel.kptr_restrict = 1
107c110
< kernel.msgmni = 1740 --- > kernel.msgmni = 1736
110c113
< kernel.osrelease = 3.0.68-1.el6.elrepo.i686 --- > kernel.osrelease = 2.6.32-279.22.1.el6.i686
116c119
< kernel.panic_on_oops = 0 --- > kernel.panic_on_oops = 1
129,131c132,134
< kernel.pty.nr = 1 < kernel.random.boot_id = f6ba4b47-c313-4466-9e3f-2e96cae9d48c < kernel.random.entropy_avail = 1247 --- > kernel.pty.nr = 2
> kernel.random.boot_id = 31a3cfc3-28b9-4b80-a174-7c8af4ae3590
> kernel.random.entropy_avail = 131
134c137
< kernel.random.uuid = 11a6f5a8-2b73-402a-8f3c-d24da95c6ccb --- > kernel.random.uuid = 0ec9460c-05d5-4552-9855-9705f3dee9a0
138c141,142
< kernel.sched_autogroup_enabled = 1 --- > kernel.sched_autogroup_enabled = 0
> kernel.sched_cfs_bandwidth_slice_us = 5000
140c144,146
< kernel.sched_latency_ns = 6000000 --- > kernel.sched_compat_yield = 0
> kernel.sched_features = 3183
> kernel.sched_latency_ns = 5000000
142c148
< kernel.sched_min_granularity_ns = 750000 --- > kernel.sched_min_granularity_ns = 1000000
150a157
> kernel.shm_rmid_forced = 0
153a161,163
> kernel.slow-work.max-threads = 4
> kernel.slow-work.min-threads = 2
> kernel.slow-work.vslow-percentage = 50
155d164
< kernel.stack_tracer_enabled = 0 158c167 < kernel.threads-max = 15806 --- > kernel.threads-max = 15876
163c172
< kernel.version = #1 SMP Mon Mar 4 00:29:41 EST 2013 --- > kernel.version = #1 SMP Wed Feb 6 00:31:03 UTC 2013
165c174
< kernel.watchdog_thresh = 10 --- > kernel.watchdog_thresh = 60
171d179
< net.core.netdev_tstamp_prequeue = 1 173c181 < net.core.rmem_default = 114688 --- > net.core.rmem_default = 188416
178c186
< net.core.wmem_default = 114688 --- > net.core.wmem_default = 188416
398,420d405
< net.ipv4.netfilter.ip_conntrack_buckets = 16384 < net.ipv4.netfilter.ip_conntrack_checksum = 1 < net.ipv4.netfilter.ip_conntrack_count = 16 < net.ipv4.netfilter.ip_conntrack_generic_timeout = 600 < net.ipv4.netfilter.ip_conntrack_icmp_timeout = 30 < net.ipv4.netfilter.ip_conntrack_log_invalid = 0 < net.ipv4.netfilter.ip_conntrack_max = 64172 < net.ipv4.netfilter.ip_conntrack_tcp_be_liberal = 0 < net.ipv4.netfilter.ip_conntrack_tcp_loose = 1 < net.ipv4.netfilter.ip_conntrack_tcp_max_retrans = 3 < net.ipv4.netfilter.ip_conntrack_tcp_timeout_close = 10 < net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60 < net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 432000 < net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120 < net.ipv4.netfilter.ip_conntrack_tcp_timeout_last_ack = 30 < net.ipv4.netfilter.ip_conntrack_tcp_timeout_max_retrans = 300 < net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 60 < net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 120 < net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent2 = 120 < net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120 < net.ipv4.netfilter.ip_conntrack_udp_timeout = 30 < net.ipv4.netfilter.ip_conntrack_udp_timeout_stream = 180 < net.ipv4.ping_group_range = 1 0 425d409 < net.ipv4.route.gc_interval = 60 436a421 > net.ipv4.route.secret_interval = 600
440c425
< net.ipv4.tcp_adv_win_scale = 1 --- > net.ipv4.tcp_adv_win_scale = 2
445d429
< net.ipv4.tcp_challenge_ack_limit = 100 447d430 < net.ipv4.tcp_cookie_size = 0 463c446 < net.ipv4.tcp_mem = 21180 28243 42360 --- > net.ipv4.tcp_mem = 81984 109312 163968
473c456
< net.ipv4.tcp_rmem = 4096 87380 903776 --- > net.ipv4.tcp_rmem = 4096 87380 3497984
487c470
< net.ipv4.tcp_wmem = 4096 16384 903776 --- > net.ipv4.tcp_wmem = 4096 16384 3497984
489c472
< net.ipv4.udp_mem = 21180 28243 42360 --- > net.ipv4.udp_mem = 81984 109312 163968
506d488
< net.ipv6.conf.all.force_tllao = 0 535d516 < net.ipv6.conf.default.force_tllao = 0 564d544 < net.ipv6.conf.eth0.force_tllao = 0 593d572 < net.ipv6.conf.eth1.force_tllao = 0 622d600 < net.ipv6.conf.lo.force_tllao = 0 697c675 < net.ipv6.route.gc_elasticity = 9 --- > net.ipv6.route.gc_elasticity = 0
704c682
< net.ipv6.route.min_adv_mss = 1220 --- > net.ipv6.route.min_adv_mss = 1
710c688
< net.netfilter.nf_conntrack_count = 16 --- > net.netfilter.nf_conntrack_count = 1
717c695
< net.netfilter.nf_conntrack_max = 64172 --- > net.netfilter.nf_conntrack_max = 64432
746c724
< net.nf_conntrack_max = 64172 --- > net.nf_conntrack_max = 64432
756a735
> vm.extra_free_kbytes = 0
764,766c743
< vm.min_free_kbytes = 44904 < vm.min_slab_ratio = 5 < vm.min_unmapped_ratio = 1 --- > vm.min_free_kbytes = 3794
769d745
< vm.nr_hugepages_mempolicy = 0 772d747 < vm.numa_zonelist_order = default 785c760 < vm.zone_reclaim_mode = 0 --- > vm.would_have_oomkilled = 0[/code]

, ,
とりあえず付けておく無駄ではなかったなまぁまぁ読めたちょっと役に立ったかなかなり良かったかも (まだ評価されていません)
Loading...

CentOS5.xのELrepo Kernel パラメータ差分メモ

■CentOS5.xのELrepo Kernel パラメータ差分メモ
 前記事で導入したELrepoのKernel3.0.66とCentOS5.9のkernel2.1.18のkernelパラメータの差分を取ってみたのでメモしておく。

以下のコマンドで取得したパラメータをそれぞれのカーネルで起動して取得。
[code]# sysctl -a[/code]

diffを取った結果。
[code]# cat k3-diff-k2.txt
2d1
< debug.exception-trace = 1 26c25 < dev.cdrom.info = Can write RAM: 1 --- dev.cdrom.info = Can write RAM: 0 29c28 < dev.cdrom.info = drive name: sr0 --- dev.cdrom.info = drive name: hdc 36a36 dev.rtc.max-user-freq = 64 41c41 < fs.dentry-state = 6192 4181 45 0 0 0 --- fs.dentry-state = 3892 2599 45 0 0 0 43,47c43,46 < fs.epoll.max_user_watches = 200546 < fs.file-max = 50584 < fs.file-nr = 224 0 50584 < fs.inode-nr = 5754 354 < fs.inode-state = 5754 354 0 0 0 0 0 --- fs.file-max = 51100 fs.file-nr = 192 0 51100 fs.inode-nr = 3429 136 fs.inode-state = 3429 136 0 0 0 0 0 59d57 < fs.pipe-max-size = 1048576 66c64,65 < fs.quota.syncs = 0 --- fs.quota.syncs = 20 fs.quota.warnings = 1 71d69 < kernel.auto_msgmni = 1 74d71 < kernel.bootloader_version = 1 75a73 kernel.cap-bound = -257 77d74 < kernel.core_pipe_limit = 0 82,83c79 < kernel.ftrace_dump_on_oops = 0 < kernel.ftrace_enabled = 1 --- kernel.exec-shield = 1 90,91d85 < kernel.io_delay_type = 0 < kernel.keys.gc_delay = 300 96,97d89 < kernel.kptr_restrict = 0 < kernel.kstack_depth_to_print = 24 103c95 < kernel.msgmni = 1001 --- kernel.msgmni = 16 105,106c97,98 < kernel.nmi_watchdog = 1 < kernel.osrelease = 3.0.66-1.el5.elrepo --- kernel.nmi_watchdog = 0 kernel.osrelease = 2.6.18-348.1.1.el5 111,112c103 < kernel.panic_on_io_nmi = 0 < kernel.panic_on_oops = 0 --- kernel.panic_on_oops = 1 114,116d104 < kernel.perf_event_max_sample_rate = 100000 < kernel.perf_event_mlock_kb = 516 < kernel.perf_event_paranoid = 1 118d105 < kernel.poweroff_cmd = /sbin/poweroff 121d107 < kernel.printk_delay = 0 126,127c112,113 < kernel.random.boot_id = 883b8f61-6fd5-42fb-9287-c08e4aaa7d3b < kernel.random.entropy_avail = 457 --- kernel.random.boot_id = ed819e04-5a67-4c80-b57c-00953773b11e kernel.random.entropy_avail = 354 130c116 < kernel.random.uuid = 1c11957b-b8e2-4e0b-bab1-dec3633f88b5 --- kernel.random.uuid = 55467d54-5ae5-4b5b-a8c8-f3fabea6264e 132c118 < kernel.randomize_va_space = 2 --- kernel.randomize_va_space = 1 134,145c120 < kernel.sched_autogroup_enabled = 1 < kernel.sched_child_runs_first = 0 < kernel.sched_latency_ns = 6000000 < kernel.sched_migration_cost = 500000 < kernel.sched_min_granularity_ns = 750000 < kernel.sched_nr_migrate = 32 < kernel.sched_rt_period_us = 1000000 < kernel.sched_rt_runtime_us = 950000 < kernel.sched_shares_window = 10000000 < kernel.sched_time_avg = 1000 < kernel.sched_tunable_scaling = 1 < kernel.sched_wakeup_granularity_ns = 1000000 --- kernel.sched_interactive = 2 150a126 kernel.softlockup_thresh = 60 153,154c129 < kernel.threads-max = 7957 < kernel.timer_migration = 1 --- kernel.threads-max = 15976 156,160c131,133 < kernel.usermodehelper.bset = 4294967295 4294967295 < kernel.usermodehelper.inheritable = 4294967295 4294967295 < kernel.version = #1 SMP PREEMPT Thu Feb 21 15:32:49 EST 2013 < kernel.watchdog = 1 < kernel.watchdog_thresh = 10 --- kernel.vdso = 1 kernel.vdso_populate = 0 kernel.version = #1 SMP Tue Jan 22 16:24:03 EST 2013 166d138 < net.core.netdev_tstamp_prequeue = 1 168,170c140,141 < net.core.rmem_default = 114688 < net.core.rmem_max = 114688 < net.core.rps_sock_flow_entries = 0 --- net.core.rmem_default = 110592 net.core.rmem_max = 110592 172,174c143,144 < net.core.warnings = 1 < net.core.wmem_default = 114688 < net.core.wmem_max = 114688 --- net.core.wmem_default = 110592 net.core.wmem_max = 110592 178c148 < net.core.xfrm_larval_drop = 1 --- net.core.xfrm_larval_drop = 0 190d159 < net.ipv4.conf.all.arp_notify = 0 201d169 < net.ipv4.conf.all.proxy_arp_pvlan = 0 206d173 < net.ipv4.conf.all.src_valid_mark = 0 215d181 < net.ipv4.conf.default.arp_notify = 0 226d191 < net.ipv4.conf.default.proxy_arp_pvlan = 0 231d195 < net.ipv4.conf.default.src_valid_mark = 0 240d203 < net.ipv4.conf.eth0.arp_notify = 0 251d213 < net.ipv4.conf.eth0.proxy_arp_pvlan = 0 256d217 < net.ipv4.conf.eth0.src_valid_mark = 0 265d225 < net.ipv4.conf.eth1.arp_notify = 0 276d235 < net.ipv4.conf.eth1.proxy_arp_pvlan = 0 281d239 < net.ipv4.conf.eth1.src_valid_mark = 0 290d247 < net.ipv4.conf.eth2.arp_notify = 0 301d257 < net.ipv4.conf.eth2.proxy_arp_pvlan = 0 306d261 < net.ipv4.conf.eth2.src_valid_mark = 0 310c265 < net.ipv4.conf.lo.accept_source_route = 0 --- net.ipv4.conf.lo.accept_source_route = 1 315d269 < net.ipv4.conf.lo.arp_notify = 0 326,327c280 < net.ipv4.conf.lo.proxy_arp_pvlan = 0 < net.ipv4.conf.lo.rp_filter = 1 --- net.ipv4.conf.lo.rp_filter = 0 331d283 < net.ipv4.conf.lo.src_valid_mark = 0 432d383 < net.ipv4.ping_group_range = 1 0 437d387 < net.ipv4.route.gc_interval = 60 441a392 net.ipv4.route.max_delay = 10 443a395 net.ipv4.route.min_delay = 2 449c401,402 < net.ipv4.rt_cache_rebuild_count = 4 --- net.ipv4.route.rt_cache_rebuild_count = 4 net.ipv4.route.secret_interval = 600 452,453c405 < net.ipv4.tcp_adv_win_scale = 1 < net.ipv4.tcp_allowed_congestion_control = bic reno --- net.ipv4.tcp_adv_win_scale = 2 455d406 < net.ipv4.tcp_available_congestion_control = bic reno 457d407 < net.ipv4.tcp_challenge_ack_limit = 100 459d408 < net.ipv4.tcp_cookie_size = 0 462c411 < net.ipv4.tcp_ecn = 2 --- net.ipv4.tcp_ecn = 0 465,466c414 < net.ipv4.tcp_frto = 2 < net.ipv4.tcp_frto_response = 0 --- net.ipv4.tcp_frto = 0 471,475c419,422 < net.ipv4.tcp_max_orphans = 8192 < net.ipv4.tcp_max_ssthresh = 0 < net.ipv4.tcp_max_syn_backlog = 128 < net.ipv4.tcp_max_tw_buckets = 8192 < net.ipv4.tcp_mem = 12177 16239 24354 --- net.ipv4.tcp_max_orphans = 4096 net.ipv4.tcp_max_syn_backlog = 1024 net.ipv4.tcp_max_tw_buckets = 180000 net.ipv4.tcp_mem = 12288 16384 24576 485c432 < net.ipv4.tcp_rmem = 4096 87380 519648 --- net.ipv4.tcp_rmem = 4096 87380 524288 492,493d438 < net.ipv4.tcp_thin_dupack = 0 < net.ipv4.tcp_thin_linear_timeouts = 0 499c444 < net.ipv4.tcp_wmem = 4096 16384 519648 --- net.ipv4.tcp_wmem = 4096 16384 524288 501c446 < net.ipv4.udp_mem = 12177 16239 24354 --- net.ipv4.udp_mem = 49056 65408 98112 504,517d448 < net.ipv4.xfrm4_gc_thresh = 32768 < net.netfilter.nf_log.0 = NONE < net.netfilter.nf_log.1 = NONE < net.netfilter.nf_log.10 = NONE < net.netfilter.nf_log.11 = NONE < net.netfilter.nf_log.12 = NONE < net.netfilter.nf_log.2 = NONE < net.netfilter.nf_log.3 = NONE < net.netfilter.nf_log.4 = NONE < net.netfilter.nf_log.5 = NONE < net.netfilter.nf_log.6 = NONE < net.netfilter.nf_log.7 = NONE < net.netfilter.nf_log.8 = NONE < net.netfilter.nf_log.9 = NONE 525c456 < vm.dirty_ratio = 20 --- vm.dirty_ratio = 40 528,530c459 < vm.extfrag_threshold = 500 < vm.highmem_is_dirtyable = 0 < vm.hugepages_treat_as_movable = 0 --- vm.flush_mmap_pages = 1 534,536c463,467 < vm.lowmem_reserve_ratio = 256 32 32 < vm.max_map_count = 65530 < vm.min_free_kbytes = 2883 --- vm.lowmem_reserve_ratio = 256 256 32 vm.max_map_count = 65536 vm.max_reclaims_in_progress = 0 vm.max_writeback_pages = 1024 vm.min_free_kbytes = 2896 539,542c470 < vm.nr_overcommit_hugepages = 0 < vm.nr_pdflush_threads = 0 < vm.oom_dump_tasks = 1 < vm.oom_kill_allocating_task = 0 --- vm.nr_pdflush_threads = 2 545a474 vm.pagecache = 100 548,549c477 < vm.scan_unevictable_pages = 0 < vm.stat_interval = 1 --- vm.swap_token_timeout = 300 550a479 vm.topdown_allocate_fast = 0 552a482 vm.vm_devzero_optimized = 1[/code]

, ,
とりあえず付けておく無駄ではなかったなまぁまぁ読めたちょっと役に立ったかなかなり良かったかも (まだ評価されていません)
Loading...

CentOS5.xでdstatの–top-ioオプションを使う

■CentOS5.xでdstatの–top-ioオプションを使う
CentOS5.xで極短時間でもI/O負荷を上げているプロセスを特定する方法としてdstatを使うことでそれが可能です。しかしdstatの–top-ioオプションはketnel2.6.20以上が必要で、CentOS5.x標準のkernel2.6.18では利用できません。そこでCentOS5.xでもそれを利用する方法を調べてみました。

dstat
http://dag.wieers.com/home-made/dstat/dstat.1.html

今回はELrepoというハードウェアリポジトリから3.0系のkernelを導入します。
ELrepoはCentOS/RedHat用のリポジトリで、既存のソフトウェアパッケージ群と整合性があります。kernelアップデートしても既存のソフトウェアが勝手にバージョンアップされることはありません。

[code]# rpm -ivh http://elrepo.org/elrepo-release-5-4.el5.elrepo.noarch.rpm
# vi /etc/yum.repos.d/elrepo.repo

[elrepo-kernel]
name=ELRepo.org Community Enterprise Linux Kernel Repository – el5
baseurl=http://elrepo.org/linux/kernel/el5/$basearch/
mirrorlist=http://elrepo.org/mirrors-elrepo-kernel.el5
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org
protect=0

# yum update
# yum install kernel-lt kernel-lt-devel
[/code]

kernel3.0で起動するとudevの起動時にエラーメッセージが出るので以下を修正。
[code]
# vi /etc/udev/rules.d/05-udev-early.rules
ACTION==”add”, SUBSYSTEM==”scsi”, WAIT_FOR_SYSFS=”ioerr_cnt”
 ↓
#ACTION==”add”, SUBSYSTEM==”scsi”, WAIT_FOR_SYSFS=”ioerr_cnt”

※iscsiが使われていないこと。iscsiを有効のまま使う場合は以下。
ACTION==”add”, SUBSYSTEM==”scsi”, KERNEL==”[0-9]*:[0-9]*”, WAIT_FOR_SYSFS=”ioerr_cnt”

# reboot
[/code]

起動画面で3.0kernel選択、起動後に起動kernelを確認する。
[code]
# uname -r
3.0.66-1.el5.elrepo を確認
[/code]

これでdstatのフル機能が利用できるようになります。
dstatは最新版をインストールします。
[code]
# wget http://dag.wieers.com/home-made/dstat/dstat-0.7.2.tar.bz2
# tar jxvf dstat-0.7.2.tar.bz2
# cd dstat-0.7.2
# ./dstat -alt –top-io –top-bio –top-cpu –top-cputime –top-cputime-avg –top-mem
[/code]

各ディスクやネットワーク単位でトラフィックを取得する場合
[code]# ./dstat -cdnlt -N eth0,eth1,total -D sda1,sda2,sda3,total –top-io –top-bio –top-cpu –top-cputime –top-cputime-avg –top-mem[/code]

ファイルに書く場合は2つ方法があります。

CSV用のカンマ区切り(画面も表示)
[code]# ./dstat -cdnlt -N eth0,eth1,total -D sda1,sda2,sda3,total –top-io –top-bio –top-cpu –top-cputime –top-cputime-avg –top-mem -o filename[/code]

terminal画面の出力をそのまま保存(画面表示無)
[code]# ./dstat -cdnlt -N eth0,eth1,total -D sda1,sda2,sda3,total –top-io –top-bio –top-cpu –top-cputime –top-cputime-avg –top-mem > filename[/code]

これによって1秒ごとにサーバの動作状況とその時に最も活動しているプロセスとその対象をいくつかの指標でログに取得できます。

, ,
とりあえず付けておく無駄ではなかったなまぁまぁ読めたちょっと役に立ったかなかなり良かったかも (まだ評価されていません)
Loading...

■Linuxで同時オープンされているファイルの数を確認する方法
OS全体で開いているファイルと特定プロセスが開いているファイルを確認する方法。負荷試験をやっている最中にパフォーマンスがでない時、確認すると意外とこれに引っかかっていることもあるので注意。OSのチューニングはちゃんとしようw

# cat /proc/sys/fs/file-nr
表示される3つの数字のうち一番左

■CommuniGate Proで同時オープンされているファイルの数を確認する方法
# ps aux | grep CGS
プロセス番号を確認
# ls /proc/プロセス番号/fd/ | wc -l
表示された数字

,
とりあえず付けておく無駄ではなかったなまぁまぁ読めたちょっと役に立ったかなかなり良かったかも (まだ評価されていません)
Loading...

■さくらのVPS 8GのIOPSを調べてみた
 レスポンスが酷くなって死に体だった某SNSがさくらのVPS 8Gにサーバを移設したことでサクサク快適になったと聞いて、お試しを利用して比較的負荷の高いSNSサービスを快適に提供できるIOPSというのはどのくらいなのかを調べてみた。VPSのOSがCentOS6 x86_64なので調査に使ったのはfioとorion。fioでは8k,10MB,128MBの3つのサイズを、orionではディスクの数を指定するパラメーターで負荷を上げることができることで今回は1,4,8で試してみた。SNSサービスを前提にするならデータベースに近い測定方法のorionの結果を重視するのでいいのではないかと思う。

 非常に興味深かったのは負荷かけながらtopで様子を見ていたところ、さくらのVPSでは大きな負荷をかけてもiowaitが16%前後で頭打ちになり、他のVPSに大きな迷惑をかけないよううまく制御されているように見えたこと。見ている限りfioでもorionでもCPUは数%程度、iowaitも16%までと非常に余裕を持って動作していた。これならおそらく他のVPSからの影響も大きく受けることなく安定してサーバ運用ができると思われる。

■fioの結果
1)サイズ 8K IOPS 2000
[code]# fio random-read-test.fio
random-read: (g=0): rw=randread, bs=4K-4K/4K-4K, ioengine=sync, iodepth=1
fio-2.0.9
Starting 1 process

random-read: (groupid=0, jobs=1): err= 0: pid=1659: Sat Nov 17 22:16:19 2012
read : io=8192 B, bw=8000.0KB/s, iops=2000 , runt= 1msec
clat (usec): min=355 , max=550 , avg=452.50, stdev=137.89
lat (usec): min=356 , max=550 , avg=453.00, stdev=137.18
clat percentiles (usec):
| 1.00th=[ 354], 5.00th=[ 354], 10.00th=[ 354], 20.00th=[ 354],
| 30.00th=[ 354], 40.00th=[ 354], 50.00th=[ 354], 60.00th=[ 548],
| 70.00th=[ 548], 80.00th=[ 548], 90.00th=[ 548], 95.00th=[ 548],
| 99.00th=[ 548], 99.50th=[ 548], 99.90th=[ 548], 99.95th=[ 548],
| 99.99th=[ 548]
lat (usec) : 500=50.00%, 750=50.00%
cpu : usr=0.00%, sys=0.00%, ctx=2, majf=0, minf=27
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued : total=r=2/w=0/d=0, short=r=0/w=0/d=0

Run status group 0 (all jobs):
READ: io=8KB, aggrb=8000KB/s, minb=8000KB/s, maxb=8000KB/s, mint=1msec, maxt=1msec

Disk stats (read/write):
vda: ios=0/0, merge=0/0, ticks=0/0, in_queue=0, util=0.00%[/code]

2)サイズ 10M IOPS 3932
[code]# fio random-read-test.fio
random-read: (g=0): rw=randread, bs=4K-4K/4K-4K, ioengine=sync, iodepth=1
fio-2.0.9
Starting 1 process
random-read: Laying out IO file(s) (1 file(s) / 10MB)

random-read: (groupid=0, jobs=1): err= 0: pid=1647: Sat Nov 17 22:06:54 2012
read : io=10240KB, bw=15730KB/s, iops=3932 , runt= 651msec
clat (usec): min=174 , max=566 , avg=247.94, stdev=39.81
lat (usec): min=174 , max=567 , avg=248.42, stdev=39.81
clat percentiles (usec):
| 1.00th=[ 185], 5.00th=[ 199], 10.00th=[ 207], 20.00th=[ 219],
| 30.00th=[ 229], 40.00th=[ 235], 50.00th=[ 241], 60.00th=[ 247],
| 70.00th=[ 258], 80.00th=[ 274], 90.00th=[ 294], 95.00th=[ 330],
| 99.00th=[ 382], 99.50th=[ 410], 99.90th=[ 486], 99.95th=[ 490],
| 99.99th=[ 564]
bw (KB/s) : min=15560, max=15560, per=98.93%, avg=15560.00, stdev= 0.00
lat (usec) : 250=63.75%, 500=36.21%, 750=0.04%
cpu : usr=2.31%, sys=14.77%, ctx=2560, majf=0, minf=27
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued : total=r=2560/w=0/d=0, short=r=0/w=0/d=0

Run status group 0 (all jobs):
READ: io=10240KB, aggrb=15729KB/s, minb=15729KB/s, maxb=15729KB/s, mint=651msec, maxt=651msec

Disk stats (read/write):
vda: ios=2390/0, merge=0/0, ticks=430/0, in_queue=425, util=60.03%[/code]

3)サイズ 128MB IOPS 4300
[code]# fio random-read-test.fio
random-read: (g=0): rw=randread, bs=4K-4K/4K-4K, ioengine=sync, iodepth=1
fio-2.0.9
Starting 1 process
random-read: Laying out IO file(s) (1 file(s) / 128MB)
Jobs: 1 (f=1): [r] [100.0% done] [18308K/0K /s] [4577 /0 iops] [eta 00m:00s]
random-read: (groupid=0, jobs=1): err= 0: pid=1651: Sat Nov 17 22:09:38 2012
read : io=131072KB, bw=17201KB/s, iops=4300 , runt= 7620msec
clat (usec): min=149 , max=907 , avg=226.51, stdev=33.92
lat (usec): min=150 , max=907 , avg=227.01, stdev=33.93
clat percentiles (usec):
| 1.00th=[ 167], 5.00th=[ 175], 10.00th=[ 181], 20.00th=[ 197],
| 30.00th=[ 209], 40.00th=[ 219], 50.00th=[ 231], 60.00th=[ 239],
| 70.00th=[ 243], 80.00th=[ 249], 90.00th=[ 262], 95.00th=[ 278],
| 99.00th=[ 322], 99.50th=[ 350], 99.90th=[ 422], 99.95th=[ 454],
| 99.99th=[ 644]
bw (KB/s) : min=16136, max=19488, per=99.96%, avg=17194.67, stdev=1014.85
lat (usec) : 250=80.75%, 500=19.22%, 750=0.02%, 1000=0.01%
cpu : usr=2.61%, sys=16.14%, ctx=32769, majf=0, minf=27
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued : total=r=32768/w=0/d=0, short=r=0/w=0/d=0

Run status group 0 (all jobs):
READ: io=131072KB, aggrb=17201KB/s, minb=17201KB/s, maxb=17201KB/s, mint=7620msec, maxt=7620msec

Disk stats (read/write):
vda: ios=31738/3, merge=0/0, ticks=5512/0, in_queue=5490, util=73.44%[/code]

■orionの結果
1)DISK数1 IOPS 879
[code]# ./orion_linux_x86-64 -run oltp -testname vps -num_disks 1
# cat vps_20121117_xxxx_summary.txt
ORION VERSION 11.1.0.7.0

Commandline:
-run oltp -testname vps -num_disks 1

This maps to this test:
Test: vps
Small IO size: 8 KB
Large IO size: 1024 KB
IO Types: Small Random IOs, Large Random IOs
Simulated Array Type: CONCAT
Write: 0%
Cache Size: Not Entered
Duration for each Data Point: 60 seconds
Small Columns:, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
Large Columns:, 0
Total Data Points: 21

Name: /dev/vda3 Size: 856582766080
1 FILEs found.

Maximum Small IOPS=879 @ Small=20 and Large=0
Minimum Small Latency=8.03 @ Small=1 and Large=0[/code]

2)DISK数4 IOPS 1210
[code]# ./orion_linux_x86-64 -run oltp -testname vps -num_disks 4
# cat vps_20121117_xxxx_summary.txt
ORION VERSION 11.1.0.7.0

Commandline:
-run oltp -testname vps -num_disks 4

This maps to this test:
Test: vps
Small IO size: 8 KB
Large IO size: 1024 KB
IO Types: Small Random IOs, Large Random IOs
Simulated Array Type: CONCAT
Write: 0%
Cache Size: Not Entered
Duration for each Data Point: 60 seconds
Small Columns:, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80
Large Columns:, 0
Total Data Points: 24

Name: /dev/vda3 Size: 856582766080
1 FILEs found.

Maximum Small IOPS=1210 @ Small=76 and Large=0
Minimum Small Latency=10.66 @ Small=4 and Large=0[/code]

3)DISK数8 IOPS 1214
[code]# ./orion_linux_x86-64 -run oltp -testname vps -num_disks 8
# cat vps_20121117_xxxx_summary.txt
ORION VERSION 11.1.0.7.0

Commandline:
-run oltp -testname vps -num_disks 8

This maps to this test:
Test: vps
Small IO size: 8 KB
Large IO size: 1024 KB
IO Types: Small Random IOs, Large Random IOs
Simulated Array Type: CONCAT
Write: 0%
Cache Size: Not Entered
Duration for each Data Point: 60 seconds
Small Columns:, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128, 136, 144, 152, 160
Large Columns:, 0
Total Data Points: 28

Name: /dev/vda3 Size: 856582766080
1 FILEs found.

Maximum Small IOPS=1214 @ Small=120 and Large=0
Minimum Small Latency=13.30 @ Small=8 and Large=0[/code]

■参考
1)ASUS K55DR + Samsung 830 SSD
[code]# ./orion_linux_x86-64 -run oltp -testname test -num_disks 4
# less test_20121117_xxxx_summary.txt
ORION VERSION 11.1.0.7.0

Commandline:
-run oltp -testname test -num_disks 4

This maps to this test:
Test: test
Small IO size: 8 KB
Large IO size: 1024 KB
IO Types: Small Random IOs, Large Random IOs
Simulated Array Type: CONCAT
Write: 0%
Cache Size: Not Entered
Duration for each Data Point: 60 seconds
Small Columns:, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80
Large Columns:, 0
Total Data Points: 24

Name: /dev/mapper/vg_mx-lv_root Size: 121769033728
1 FILEs found.

Maximum Small IOPS=25169 @ Small=72 and Large=0
Minimum Small Latency=0.19 @ Small=4 and Large=0[/code]

2)DELL D520 + Hitachi HTS723232A7A364
[code]# ./orion_linux_x86-64 -run oltp -testname test -num_disks 4
# less test_20121117_xxxx_summary.txt
ORION VERSION 11.1.0.7.0

Commandline:
-run oltp -testname test -num_disks 1

This maps to this test:
Test: test
Small IO size: 8 KB
Large IO size: 1024 KB
IO Types: Small Random IOs, Large Random IOs
Simulated Array Type: CONCAT
Write: 0%
Cache Size: Not Entered
Duration for each Data Point: 60 seconds
Small Columns:, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
Large Columns:, 0
Total Data Points: 21

Name: /dev/sda3 Size: 314460679680
1 FILEs found.

Maximum Small IOPS=94 @ Small=20 and Large=0
Minimum Small Latency=17.53 @ Small=1 and Large=0[/code]

■まとめ
 さくらVPS 8Gの環境はorionのテストにおいてSSDには遠く及ばないが、通常のHDDの約12倍のパフォーマンスを出していることが確認できた。VPSとしては十分な速度だと思われる。IOPSのテストツールとしてfioとorionを比較した場合、fioの方がIOPSを高めに出す傾向があるようだ。ファイルの読み出しという点ではキャッシュなども動作するため、IOPSが高くなる傾向があってもおかしくない。SNS等のデータベースの利用度の高いアプリケーションではorionを使ったIOPSで評価を行う方がより現実的なレスポンスに近い結果が得られるのではないかとテスト結果からも感じられた。

, , , ,
とりあえず付けておく無駄ではなかったなまぁまぁ読めたちょっと役に立ったかなかなり良かったかも (まだ評価されていません)
Loading...

■munin用CommuniGate Pro監視プラグインサンプル
 CommuniGate Proの各プロトコルの接続状況を確認できるプラグインのサンプル。net-snmpとCommuniGate Pro側のsnmpサーバ設定が必須。OS側のsnmp設定と重ならないようにするためにCGPのポート番号を変更している場合には ホストIP:ポート番号 で記述する。

■プラグインを作成する
# vi /etc/munin/plugins/cgp_active
以下
[code]
#!/bin/sh

if [ “$1” = “autoconf” ]; then
if [ -x /usr/bin/snmpwalk ]; then
echo yes
exit 0
else
echo no
exit 1
fi
fi

if [ “$1” = “config” ]; then

# ___WARNING=10000

echo ‘graph_title CGP Active Sessions’
echo “graph_args -l 0”
echo ‘graph_vlabel CGP Active Sessions’
echo ‘graph_info This graph shows CGP Active Sessions’
echo ‘graph_category CGP’

echo ‘sip_server.label SIP Server’
echo ‘sip_server.draw LINE2’
echo “sip_server.info SIP Server”

echo ‘sip_clients.label SIP Clients’
echo ‘sip_clients.draw LINE2’
echo “sip_clients.info SIP Clients”

echo ‘sip_act.label SIP Con’
echo ‘sip_act.draw LINE2’
echo “sip_act.info SIP Con”

echo ‘media_act.label Media Ch’
echo ‘media_act.draw LINE2’
echo “media_act.info Media Ch”

echo ‘media_leg.label Media Leg’
echo ‘media_leg.draw LINE2’
echo “media_leg.info Media Leg”

echo ‘prox_act.label Proxy’
echo ‘prox_act.draw LINE2’
echo “prox_act.info Proxy”

echo ‘ximss.label XIMSS’
echo ‘ximss.draw LINE2’
echo “ximss.info XIMSS”

echo ‘airsync.label AirSync’
echo ‘airsync.draw LINE2’
echo “airsync.info AirSync”

exit 0
fi

echo -n “sip_server.value ”
snmpwalk -v 2c -c password 192.168.0.xxx 1.3.6.1.4.1.5678.2.1.1.2.2.1 | awk ‘{ print $4 }’

echo -n “sip_clients.value ”
snmpwalk -v 2c -c password 192.168.0.xxx 1.3.6.1.4.1.5678.2.1.1.2.3.1 | awk ‘{ print $4 }’

echo -n “sip_act.value ”
snmpwalk -v 2c -c password 192.168.0.xxx 1.3.6.1.4.1.5678.2.1.1.2.1.41 | awk ‘{ print $4 }’

echo -n “media_act.value ”
snmpwalk -v 2c -c password 192.168.0.xxx 1.3.6.1.4.1.5678.2.1.15.1 | awk ‘{ print $4 }’

echo -n “media_leg.value ”
snmpwalk -v 2c -c password 192.168.0.xxx 1.3.6.1.4.1.5678.2.1.15.21 | awk ‘{ print $4 }’

echo -n “prox_act.value ”
snmpwalk -v 2c -c password 192.168.0.xxx 1.3.6.1.4.1.5678.2.1.7.1 | awk ‘{ print $4 }’

echo -n “ximss.value ”
snmpwalk -v 2c -c password 192.168.0.xxx 1.3.6.1.4.1.5678.2.1.1.10.1 | awk ‘{ print $4 }’

echo -n “airsync.value ”
snmpwalk -v 2c -c password 192.168.0.xxx 1.3.6.1.4.1.5678.2.1.1.15.1 | awk ‘{ print $4 }’
[/code]

■値が取得できることを確認する
# cd /etc/munin/plugins/
# munin-run cgp_active

, , ,
とりあえず付けておく無駄ではなかったなまぁまぁ読めたちょっと役に立ったかなかなり良かったかも (まだ評価されていません)
Loading...

■CentOS6系のMySQLで日本語全文検索
CentOS6系のMySQLは5.1になっているため、日本語全文検索用途で5.0系で使ってきたTritonnが使えない。そのため新たにftppc mecabプラグインを導入し代替とする。参考した記事は以下。

http://www.genteel.org/?p=132
http://mironal-memo.blogspot.jp/2012/07/vpscentos-6mecab.html

■以下インストール手
gccとgcc-c++,mysql-devel必須

[code]# yum install gcc gcc-c++ mysql-devel libicu libicu-devel
# wget http://mecab.googlecode.com/files/mecab-0.994.tar.gz
# wget http://mecab.googlecode.com/files/mecab-ipadic-2.7.0-20070801.tar.gz
# tar zxvf mecab-0.994.tar.gz
# cd mecab-0.994
# ./configure
# make && make install
# ../
# tar zxvf mecab-ipadic-2.7.0-20070801.tar.gz
# cd mecab-ipadic-2.7.0-20070801
# ./configure –with-cherset=utf-8
# make && make install
# ../
# wget http://jaist.dl.sourceforge.net/project/mysqlftppc/mysqlftppc/1.6.1/mysqlftppc-mecab-1.6.1.tar.gz
# cd mysqlftppc-mecab-1.6.1
# ./configure && make && make install[/code]

MySQLへのプラグイン導入

[code]mysql> INSTALL PLUGIN mecab SONAME ‘libftmecab.so.0.0.0’;
mysql> show plugin;
mysql> show status like “mecab_info”;[/code]

導入できたか検索で確認

[code]mysql> use test
mysql> CREATE TABLE me (c TEXT, FULLTEXT(c) WITH PARSER mecab);
mysql> show create table me\G
mysql> INSERT INTO me VALUES(“今日の天気は晴れです。”);
mysql> SELECT * FROM me WHERE MATCH(c) AGAINST(‘+”今日の天気”‘ IN BOOLEAN MODE);
mysql> explain SELECT * FROM me WHERE MATCH(c) AGAINST(‘+”今日の天気”‘ IN BOOLEAN MODE);[/code]

Tritonnで作成したindexをダンプ後編集して取り込む時の修正方法

[code]変更前
USING NGRAM, NORMALIZE, 512 (`body`)

変更後
(`body`) /*!50100 WITH PARSER `mecab` */[/code]

, ,
とりあえず付けておく無駄ではなかったなまぁまぁ読めたちょっと役に立ったかなかなり良かったかも (まだ評価されていません)
Loading...