【问题标题】:Sphinx installation centos7狮身人面像安装centos7
【发布时间】:2020-07-30 05:34:52
【问题描述】:

我刚刚在运行 centos 7 的专用服务器上将 sphinx 更新到最新版本,但经过数小时的搜索,我找不到问题。

狮身人面像索引创建良好,但我无法启动搜索守护进程。我一直收到这条消息:

systemctl status searchd.service
searchd.service - SphinxSearch Search Engine
Loaded: loaded (/usr/lib/systemd/system/searchd.service; disabled; vendor preset: disabled)
Active: failed (Result: timeout) since Sat 2018-03-24 21:14:09 CET; 3min 4s ago
Process: 17865 ExecStartPre=/bin/chown sphinx.sphinx /var/run/sphinx (code=exited, status=0/SUCCESS)
Process: 17863 ExecStartPre=/bin/mkdir -p /var/run/sphinx (code=killed, signal=TERM)

Mar 24 21:14:09  systemd[1]: Starting SphinxSearch Search Engine...
Mar 24 21:14:09  systemd[1]: searchd.service start-pre operation timed out. Terminating.
Mar 24 21:14:09  systemd[1]: Failed to start SphinxSearch Search Engine.
Mar 24 21:14:09  systemd[1]: Unit searchd.service entered failed state.
Mar 24 21:14:09  systemd[1]: searchd.service failed.

我真的不知道这个问题是从哪里来的。

【问题讨论】:

    标签: centos7 sphinx


    【解决方案1】:

    在您的 systemd 服务文件中(我的在 /usr/lib/systemd/system/searchd.service 中)注释掉: /bin/chown sphinx.sphinx /var/run/sphinx /bin/mkdir -p /var/run/sphinx manually

    (如果尚未完成,您可以手动运行这些命令)。

    然后从 Type=forking Type=simple

    然后执行systemctl daemon-reload,您可以启动/停止/状态服务:

    [root@server ~]# cat /usr/lib/systemd/system/searchd.service
    [Unit]
    Description=SphinxSearch Search Engine
    After=network.target remote-fs.target nss-lookup.target
    After=syslog.target
    
    [Service]
    Type=simple
    User=sphinx
    Group=sphinx
    # Run ExecStartPre with root-permissions
    PermissionsStartOnly=true
    #ExecStartPre=/bin/mkdir -p /var/run/sphinx
    #ExecStartPre=/bin/chown sphinx.sphinx /var/run/sphinx
    # Run ExecStart with User=sphinx / Group=sphinx
    ExecStart=/usr/bin/searchd --config /etc/sphinx/sphinx.conf
    ExecStop=/usr/bin/searchd --config /etc/sphinx/sphinx.conf --stopwait
    KillMode=process
    KillSignal=SIGTERM
    SendSIGKILL=no
    LimitNOFILE=infinity
    TimeoutStartSec=infinity
    PIDFile=/var/run/sphinx/searchd.pid
    
    [Install]
    WantedBy=multi-user.target
    Alias=sphinx.service
    Alias=sphinxsearch.service
    
    [root@server ~]# systemctl start searchd
    [root@server ~]# systemctl status searchd
    ● searchd.service - SphinxSearch Search Engine
       Loaded: loaded (/usr/lib/systemd/system/searchd.service; disabled; vendor preset: disabled)
       Active: active (running) since Sun 2018-03-25 10:41:24 EDT; 4s ago
      Process: 111091 ExecStop=/usr/bin/searchd --config /etc/sphinx/sphinx.conf --stopwait (code=exited, status=1/FAILURE)
     Main PID: 112030 (searchd)
       CGroup: /system.slice/searchd.service
               ├─112029 /usr/bin/searchd --config /etc/sphinx/sphinx.conf
               └─112030 /usr/bin/searchd --config /etc/sphinx/sphinx.conf
    
    Mar 25 10:41:24 server.domain.com searchd[112026]: Sphinx 2.3.2-id64-beta (4409612)
    Mar 25 10:41:24 server.domain.com searchd[112026]: Copyright (c) 2001-2016, Andrew Aksyonoff
    Mar 25 10:41:24 server.domain.com searchd[112026]: Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
    Mar 25 10:41:24 server.domain.com searchd[112026]: Sphinx 2.3.2-id64-beta (4409612)
    Mar 25 10:41:24 server.domain.com searchd[112026]: Copyright (c) 2001-2016, Andrew Aksyonoff
    Mar 25 10:41:24 server.domain.com searchd[112026]: Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
    Mar 25 10:41:24 server.domain.com searchd[112026]: precaching index 'test1'
    Mar 25 10:41:24 server.domain.com searchd[112026]: WARNING: index 'test1': prealloc: failed to open /var/lib/sphinx/test1.sph: No such file or directory...T SERVING
    Mar 25 10:41:24 server.domain.com searchd[112026]: precaching index 'testrt'
    Mar 25 10:41:24 server.domain.com systemd[1]: searchd.service: Supervising process 112030 which is not our child. We'll most likely not notice when it exits.
    Hint: Some lines were ellipsized, use -l to show in full.
    [root@server ~]# systemctl stop searchd
    [root@server ~]# systemctl status searchd
    ● searchd.service - SphinxSearch Search Engine
       Loaded: loaded (/usr/lib/systemd/system/searchd.service; disabled; vendor preset: disabled)
       Active: failed (Result: exit-code) since Sun 2018-03-25 10:41:36 EDT; 1s ago
      Process: 112468 ExecStop=/usr/bin/searchd --config /etc/sphinx/sphinx.conf --stopwait (code=exited, status=1/FAILURE)
     Main PID: 112030
    
    Mar 25 10:41:24 server.domain.com searchd[112026]: WARNING: index 'test1': prealloc: failed to open /var/lib/sphinx/test1.sph: No such file or directory...T SERVING
    Mar 25 10:41:24 server.domain.com searchd[112026]: precaching index 'testrt'
    Mar 25 10:41:24 server.domain.com systemd[1]: searchd.service: Supervising process 112030 which is not our child. We'll most likely not notice when it exits.
    Mar 25 10:41:33 server.domain.com systemd[1]: Stopping SphinxSearch Search Engine...
    Mar 25 10:41:33 server.domain.com searchd[112468]: [Sun Mar 25 10:41:33.183 2018] [112468] using config file '/etc/sphinx/sphinx.conf'...
    Mar 25 10:41:33 server.domain.com searchd[112468]: [Sun Mar 25 10:41:33.183 2018] [112468] stop: successfully sent SIGTERM to pid 112030
    Mar 25 10:41:36 server.domain.com systemd[1]: searchd.service: control process exited, code=exited status=1
    Mar 25 10:41:36 server.domain.com systemd[1]: Stopped SphinxSearch Search Engine.
    Mar 25 10:41:36 server.domain.com systemd[1]: Unit searchd.service entered failed state.
    Mar 25 10:41:36 server.domain.com systemd[1]: searchd.service failed.
    Hint: Some lines were ellipsized, use -l to show in full.
    

    【讨论】:

    • 非常感谢。我尝试了您的解决方案,但问题仍然存在。
    • @PolinaGuseva 所以你现在有完全相同的服务文件,systemctl daemon-reload,但仍然无法启动守护进程?状态命令现在说什么?
    【解决方案2】:

    我遇到了同样的问题,终于找到了适合我的解决方案。

    我已经编辑了我的“/etc/systemd/system/sphinx.service”看起来像

    [Unit]
    Description=SphinxSearch Search Engine
    After=network.target remote-fs.target nss-lookup.target
    After=syslog.target
    
    [Service]
    User=sphinx
    Group=sphinx
    RuntimeDirectory=sphinxsearch
    RuntimeDirectoryMode=0775
    # Run ExecStart with User=sphinx / Group=sphinx
    ExecStart=/usr/bin/searchd --config /etc/sphinx/sphinx.conf
    ExecStop=/usr/bin/searchd --config /etc/sphinx/sphinx.conf --stopwait
    KillMode=process
    KillSignal=SIGTERM
    SendSIGKILL=no
    LimitNOFILE=infinity
    TimeoutStartSec=infinity
    #PIDFile=/var/run/sphinx/searchd.pid
    PIDFile=/var/run/sphinxsearch/searchd.pid
    
    [Install]
    WantedBy=multi-user.target
    Alias=sphinx.service
    Alias=sphinxsearch.service
    

    在这种情况下,我的 searchd 能够在重新启动后幸存下来。上一篇文章中的解决方案在我的情况下在 /var/run/sphinxsearch 目录在重启后删除之前重启后开始搜索的问题。

    【讨论】:

      【解决方案3】:

      事实是 RHEL (CentOS) 7 无法感知“TimeoutStartSec”参数的“Infinity”值。您必须设置一个数值。例如,TimeoutStartSec=600

      【讨论】:

        猜你喜欢
        • 2014-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-26
        • 2010-11-28
        • 1970-01-01
        相关资源
        最近更新 更多