searchd命令参考

searchd 也是sphinx的两个关键工具之一。 searchd是系统实际上处理搜索的组件,运行时它表现得就像一种服务,他与客户端应用程序调用的五花八门的API通讯,负责接受查询、处理查询和返回数据集。

不 同于 indexer, searchd 并不是设计用来在命令行或者一般的脚本中调用的, 相反,它或者做为一个守护程序(daemon)被init.d调用(在Unix/Linux类系统上),或者做为一种服务(在Windows类系统上), 因此并不是所有的命令行选项都总是有效,这与构建时的选项有关。

调用 searchd 就像这么简单:

$ searchd [OPTIONS]

不管 searchd 是如何构建的,下列选项总是可用:

--help (可以简写为 -h ) 列出可以在你当前的 searchd 构建上调用的参数。--config <file> (可简写为 -c <file>) 使 searchd 使用指定的配置文件,与上述indexer的--config开关相同。--stop 用来停掉 searchd,使用sphinx.conf中所指定的PID文件,因此您可能还需要用--config选项来确认searchd使用哪个配置文件。值得 注意的是,调用 --stop 会确保用 UpdateAttributes() 对索引进行的更动会反应到实际的索引文件中去。示例: $ searchd --config /home/myuser/sphinx.conf --stop
--status 用来查询运行中的searchd实例的状态,,使用指定的(也可以不指定,使用默认)配置文件中描述的连接参数。它通过配置好的第一个UNIX套接字或 TCP端口与运行中的实例连接。一旦连接成功,它就查询一系列状态和性能计数器的值并把这些数据打印出来。在应用程序中,可以用Status() API调用来访问相同的这些计数器。示例: $ searchd --status
$ searchd --config /home/myuser/sphinx.conf --status
--pidfile 用来显式指定一个PID文件。PID文件存储着关于searchd的进程信息,这些信息用于进程间通讯(例如indexer需要知道这个PID以便在轮换 索引的时候与searchd进行通讯)searchd在正常模式运行时会使用一个PID(即不是使用--console选项启动的),但有可能存在 searchd在控制台(--console)模式运行,而同时正在索引正在进行更新和轮换操作的情况,此时就需要一个PID文件。 $ searchd --config /home/myuser/sphinx.conf --pidfile /home/myuser/sphinx.pid
--console 用来强制searchd以控制台模式启动;典型情况下searchd像一个传统的服务器应用程序那样运行,它把信息输出到(sphinx.conf配 置文件中指定的)日志文件中。但有些时候需要调试配置文件或者守护程序本身的问题,或者诊断一些很难跟踪的问题,这时强制它把信息直接输出到调用他的控制 台或者命令行上会使调试工作容易些。同时,以控制台模式运行还意味着进程不会fork(因此搜索操作都是串行执行的),也不会写日志文件。(要特别注 意,searchd并不是被主要设计用来在控制台模式运行的)。可以这样调用searchd: $ searchd --config /home/myuser/sphinx.conf --console
--iostats 当使用日志时(必须在sphinx.conf中启用query_log选项)启用--iostats会对每条查询输出关于查询过程中发生的输入输出操作的详细信息,会带来轻微的性能代价,并且显然会导致更大的日志文件。更多细节请参考 query log format 一节。可以这样启动searchd: $ searchd --config /home/myuser/sphinx.conf --iostats
--cpustats 使实际CPU时间报告(不光是实际度量时间(wall time))出现在查询日志文件(每条查询输出一次)和状态报告(累加之后)中。这个选项依赖clock_gettime()系统调用,因此可能在某些系 统上不可用。可以这样启动searchd: $ searchd --config /home/myuser/sphinx.conf --cpustats
--port portnumber (可简写为 -p) 指定searchd监听的端口,通常用于调试。这个选项的默认值是9312,但有时用户需要它运行在其他端口上。在这个命令行选项中指定端口比配置文件中 做的任何设置优先级都高。有效的端口范围是0到65535,但要使用低于1024的端口号可能需要权限较高的账户。使用示例: $ searchd --port 9313
--index <index> 强制searchd只提供针对指定索引的搜索服务。跟上面的--port相同,这主要是用于调试,如果是长期使用,则应该写在配置文件中。使用示例: $ searchd --index myindex

searchd在Windows平台上有一些特有的选项,与它做为windows服务所产生的额外处理有关,这些选项只存在于Windows二进制版本。

注意,在Windows上searchd默认以--console模式运行,除非用户将它安装成一个服务。

--install 将searchd安装成一个微软管理控制台(Microsoft Management Console, 控制面板 / 管理工具 / 服务)中的服务。 如果一条命令指定了--install,那么同时使用的其他所有选项,都会被保存下来,服务安装好后,每次启动都会调用这些命令。例如,调用 searchd时,我们很可能希望用--config指定要使用的配置文件,那么在使用--install的同时也要加入这个选项。一旦调用了这个选项, 用户就可以在控制面板中的管理控制台中对searchd进行启动、停止等操作,因此一切可以开始、停止和重启服务的方法对searchd也都有效。示例: C:\WINDOWS\system32> C:\Sphinx\bin\searchd.exe --install
--config C:\Sphinx\sphinx.conf
如果每次启动searchd你都希望得到I/O stat信息,那就应该把这个选项也用在调用--install的命令行里: C:\WINDOWS\system32> C:\Sphinx\bin\searchd.exe --install
--config C:\Sphinx\sphinx.conf --iostats
--delete 在微软管理控制台(Microsoft Management Console)和其他服务注册的地方删除searchd,当然之前要已经通过--install安装过searchd服务。注意,这个选项既不删除软件 本身,也不删除任何索引文件。调用这个选项之后只是使软件提供的服务不能从windows的服务系统中调用,也不能在机器重启后自动启动了。如果调用时 searchd正在做为服务运行中,那么现有的示例并不会被结束(一直会运行到机器重启或调用--stop)。如果服务安装时(用 --servicename)指定了自定义的名字,那在调用此选项卸载服务时里也需要用--servicename指定相同的名字。示例: C:\WINDOWS\system32> C:\Sphinx\bin\searchd.exe --delete
--servicename <name> 在安装或卸载服务时指定服务的名字,这个名字会出现在管理控制台中。有一个默认的名字searchd,但若安装服务的系统可能有多个管理员登录,或同时运 行多个searchd实例,那么起一个描述性强的名字将是个好好主意。注意,只有在与--install或者--delete同时使用的时候 --servicename才有效,否则这个选项什么都不做。示例: C:\WINDOWS\system32> C:\Sphinx\bin\searchd.exe --install
--config C:\Sphinx\sphinx.conf --servicename SphinxSearch
--ntservice 在Windows平台,管理控制台将searchd做为服务调用时将这个选项传递给它。通常没有必要直接调用这个开关,它是为Windows系统准备的, 当服务启动时,系统把这个参数传递给searchd。然而理论上,你也可以用这个开关从命令行将searchd启动成普通服务模式(与--console 代表的控制台模式相对)

最后但并非最不重要的,类似其他的守护进程(daemon),searchd多种信号。

SIGTERM进行一次平滑的重启。新的请求不会被接受;但是已经开始的请求不会被强行中断。SIGHUP启动索引轮询。取决于 seamless_rotate 的设置,新的请求可能会在短期内陷入停顿;客户端将接收到临时错误。SIGUSR1强制重新打开searchd日志和查询日志,使得日志轮询可以进行。
posted on 2013-04-08 17:12  0o怀恋o0  阅读(4225)  评论(0编辑  收藏  举报