发表回复 
 
主题评价:
  • 0 次(票) - 平均星级: 0
  • 1
  • 2
  • 3
  • 4
  • 5
search进程压力好大
2013年06月19日, 16:42 (这个帖子最后修改于: 2013年06月19日 22:16 by hpxl.)
search进程压力好大
机器没什么查询的,突然占用资源很大。xunsearch 版本:xs-searchd: xunsearch/1.4.7-dev (search server)
PHP 代码:
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
28942 root      18   3  152m  28m 1852 S 174.6  0.2  61
:51.25 xs-searchd
28940 root      18   3  152m  28m 1888 S 128.4  0.2  45
:21.77 xs-searchd
28941 root      18   3  122m  28m 1892 S 96.5  0.2  43
:17.51 xs-searchd 

strace -p 28942 结果
PHP 代码:
[root@spjwebserver1 xunsearch]# strace -p 28942
Process 28942 attached interrupt to quit
clock_gettime
(CLOCK_MONOTONIC, {2533164267904950}) = 0
epoll_wait
(1, {}, 3215314)            = 0
clock_gettime
(CLOCK_MONOTONIC, {2533179582319950}) = 0
epoll_ctl
(1EPOLL_CTL_DEL0, {EPOLLIN, {u32=0u64=0}}) = 0
epoll_ctl
(1EPOLL_CTL_ADD0, {EPOLLIN, {u32=0u64=0}}) = 0
epoll_wait
(1, {}, 3220000)            = 0
clock_gettime
(CLOCK_MONOTONIC, {2533199583044950}) = 0
epoll_ctl
(1EPOLL_CTL_DEL0, {EPOLLIN, {u32=0u64=0}}) = 0
epoll_ctl
(1EPOLL_CTL_ADD0, {EPOLLIN, {u32=0u64=0}}) = 0
epoll_wait
(1, {}, 3220000)            = 0
clock_gettime
(CLOCK_MONOTONIC, {2533219583106950}) = 0
epoll_ctl
(1EPOLL_CTL_DEL0, {EPOLLIN, {u32=0u64=0}}) = 0
epoll_ctl
(1EPOLL_CTL_ADD0, {EPOLLIN, {u32=0u64=0}}) = 0
epoll_wait
(1, {}, 3220000)            = 0
clock_gettime
(CLOCK_MONOTONIC, {2533239583124950}) = 0
epoll_ctl
(1EPOLL_CTL_DEL0, {EPOLLIN, {u32=0u64=0}}) = 0
epoll_ctl
(1EPOLL_CTL_ADD0, {EPOLLIN, {u32=0u64=0}}) = 0
epoll_wait
(1, {}, 3220000)            = 0
clock_gettime
(CLOCK_MONOTONIC, {2533259583041950}) = 0
epoll_wait
(1, {}, 321)                = 0
clock_gettime
(CLOCK_MONOTONIC, {2533259584116950}) = 0
epoll_ctl
(1EPOLL_CTL_DEL0, {EPOLLIN, {u32=0u64=0}}) = 0
epoll_ctl
(1EPOLL_CTL_ADD0, {EPOLLIN, {u32=0u64=0}}) = 0
epoll_wait
(1,  <unfinished ...>
Process 28942 detached 

info信息
PHP 代码:
[root@spjwebserver1 xunsearch]# php sdk/php/util/Quest.php goods --info
---------- SERVER INFO BEGIN ----------
{
  
id:"worker1"uptime:2482num_burst:7max_burst:7,
  
num_accept:19aps:0.0num_task:29tps:0.0,
  
sock:37name:"goods"home:"data/goods"rcv_size:8,
  
flag:0x0000version:"1.4.7-dev"
}
DBS: [NULL]
CMDS:
  -> {
NULL}
---------- 
SERVER INFO END ----------
TPOOL[0x61e2c0] { status:'-I-'total:9spare:3max:32 }
 = 
TODO task queueNULL
 
thread[0] {status:'ABT'calls:3tid:0x41ffe940task:{func:0x40ebb0cancel:0x40cc90arg:0xb7d5550timed:1126}}
 - 
thread[1] {status:'ABT'calls:3tid:0x429ff940task:{func:0x40ebb0cancel:0x40cc90arg:0xb7f8db0timed:1033}}
 - 
thread[2] {status:'ABT'calls:2tid:0x43400940task:{func:0x40ebb0cancel:0x40cc90arg:0xb7521a0timed:2144}}
 - 
thread[3] {status:'ABT'calls:2tid:0x43e01940task:{func:0x40ebb0cancel:0x40cc90arg:0xb776ff0timed:2142}}
 - 
thread[4] {status:'ABT'calls:2tid:0x44802940task:{func:0x40ebb0cancel:0x40cc90arg:0xb7ad5f0timed:2121}}
 - 
thread[5] {status:'ABT'calls:3tid:0x45203940task:{func:0x40ebb0cancel:0x40cc90arg:0xb7f6e30timed:993}}
 - 
thread[6] {status:'A--'calls:1tid:0x45c04940task:{}}
 - 
thread[7] {status:'A--'calls:1tid:0x46605940task:{}}
 - 
thread[8] {status:'A--'calls:1tid:0x47006940task:{}} 

找到问题原因了,当某一个字段设置type=numeric,且字段值是浮点型时,某个xs search进程占用cpu和内存迅速升高,并一直维持在占用资源很高的状态。手册关于type=numeric的说明,“numeric 数值型,包含整型和浮点数,仅当字段需用于以排序或区间检索时才设为该类型,否则请使用 string 即可”。xunsearch/1.4.6 正式版正常,无此情况。 附上ini设置,资源占用信息。
PHP 代码:
ini文件配置信息:
project
.name goods 
project
.default_charset utf-8
server
.index 8383
server
.search 8384

[id]
type id

[price]
type numeric

查询操作:
hpxl
@debian:~/testphp sdk/php/util/Quest.php goods id:3122 --show-query
[XSExceptionsdk/php/lib/XS.php(2455): Failed to recv the data from server completely (SIZE:0/8REASON:timeout)
#0 sdk/php/lib/XS.php(2395): XSServer->read(8)
#1 sdk/php/lib/XS.php(2380): XSServer->getRespond()
#2 sdk/php/lib/XS.php(1686): XSServer->execCommand(Object(XSCommand), 206)
#3 Quest.php(338): XSSearch->search()
#4 {main}

load average信息:
top 
21:49:29 up  1:31,  4 users,  load average1.000.940.90
Tasks
:  82 total,   1 running,  81 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy99.7 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem
:    501768 total,   281380 used,   220388 free,    15148 buffers
KiB Swap
:        0 total,        0 used,        0 free,   149380 cached

  PID USER      PR  NI  VIRT  RES  SHR S  
%CPU %MEM    TIME+  COMMAND                                                        
 4869 root      23   3  110m  27m 2364 S  99.5  5.6   6
:52.65 xs-searchd 

Hello world!
查找这个用户的全部帖子
引用并回复
2013年06月20日, 09:43
RE: search进程压力好大
是修改了 numeric 字段修剪引发的 BUG,原先用的是 "%g" 效果会自动变指数形式,让人不习惯,因此改回用 %f,并自动修剪尾部没用的 000。

详见:[url]https://github.com/hightman/xunsearch/commit/8a8af7730e60962f690b0ace052efd503c33fb60[/url]
查找这个用户的全部帖子
引用并回复
2013年06月20日, 09:53
RE: search进程压力好大
测试正常了。

Hello world!
查找这个用户的全部帖子
引用并回复
发表回复 


论坛跳转:


正在浏览该主题的用户: 1 个游客