什么是 net_idle 状态的 sphinx 线程?

what is a sphinx thread with net_idle state?

我使用 sphinx 搜索引擎,有时 运行

show threads;

我看到一个线程如下图所示,线程中 "Net_Idle" 的状态是 "Time" 值上升到 100 秒,在某些情况下上升到 500 秒,然后自动消失。

这个话题是什么,什么时候以及为什么 运行宁?

这意味着有一个通过 sphinxql 协议打开的连接。如果你同时打开 2 个连接到你的 searchd,你可以很容易地重现它,然后在其中任何一个中你会看到另一个有连接,如果你什么都不做,状态将是 net_idle.例如:

Tab 1:
[snikolaev@dev01 ~]$ mysql -P9314 -h0
mysql>

Tab 2:
[snikolaev@dev01 ~]$ mysql -P9314 -h0
mysql> show threads;
+-------+----------+----------+----------+--------------+
| Tid   | Proto    | State    | Time     | Info         |
+-------+----------+----------+----------+--------------+
| 16626 | sphinxql | query    | 0.000001 | show threads |
| 16598 | sphinxql | net_idle | 3.774544 |              |
+-------+----------+----------+----------+--------------+
2 rows in set (0.00 sec)

如果您不知道是谁 ps 打开了连接,您可以使用 lsof、netstat 和 ps 或其他具有相同功能的工具来追踪它,例如:

[snikolaev@dev01 ~]$ lsof -p 14267|grep TCP
searchd_o 14267 snikolaev    6u  IPv4 568694105      0t0       TCP *:9314 (LISTEN)
searchd_o 14267 snikolaev   13u  IPv4 568804452      0t0       TCP localhost:9314->localhost:24228 (ESTABLISHED)

[snikolaev@dev01 ~]$ sudo netstat -apn|grep 24228
tcp        0      0 127.0.0.1:9314              127.0.0.1:24228             ESTABLISHED 14267/./searchd_old
tcp        0      0 127.0.0.1:24228             127.0.0.1:9314              ESTABLISHED 28949/mysql

[snikolaev@dev01 ~]$ ps aux|grep 28949
518      28949  0.0  0.0 234088 10596 pts/58   S+   23:49   0:00 mysql -P9314 -h0

在我的情况下,我可以看到连接来自 "mysql",在您的情况下可能有所不同。