On this page
mongostat
在本页面
macOS Sierra and Go 1.6 Incompatibility
在 macOS Sierra 上运行的用户需要 3.2.10 或更高版本的 mongostat。
Synopsis
mongostatUtil 提供当前正在运行的mongod或mongos实例的状态的快速概述。 mongostat在功能上类似于 UNIX/Linux 文件系统 Utilvmstat
,但是提供有关mongod和mongos实例的数据。
从系统命令行运行mongostat,而不是mongo shell。
Required Access
为了连接到使用--auth选项强制执行授权的mongod,请指定--username和--password选项,并且连接用户必须对群集资源具有serverStatus特权操作。
内置角色clusterMonitor提供了此特权以及其他特权。要创建仅具有运行mongostat特权的角色,请参见创建要运行的角色 mongostat。
Options
mongostat
--help
``- 返回有关 mongostat 的选项和使用的信息。
--verbose
`,` `-v`
- 增加在标准输出或日志文件中返回的内部报告的数量。通过多次包含该选项(例如
-vvvvv
)来提高-v
形式的详细程度。
- 增加在标准输出或日志文件中返回的内部报告的数量。通过多次包含该选项(例如
--version
``- 返回 mongostat 版本号。
--uri
<connectionString>
- 3.4.6 版中的新功能。
指定可解析的URI 连接字符串以连接到 MongoDB 部署。
--uri "mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]"
有关连接字符串的组成部分的更多信息,请参见连接字符串 URI 格式文档。
Important
--host
<hostname><:port>
,
-h
<hostname><:port>
- 默认:localhost:27017
指定要连接的mongod的可解析主机名。默认情况下, mongostat 尝试连接到端口27017
上在 localhost 上运行的 MongoDB 实例。
要连接到副本集,可以指定要报告的一个或多个集合成员,如下所示(另请参见--discover
标志):
--host <hostname1><:port>,<hostname2><:port>,<...>
在 3.0.0 版中进行了更改:如果您使用 IPv6 并使用<address>:<port>
格式,则必须将地址和端口组合的一部分括在方括号(例如[<address>]
)中。
--port
<port>
- 默认:27017
指定 MongoDB 实例在其上侦听 Client 端连接的 TCP 端口。
--ipv6
``- 已在 3.0 版中删除.
启用 IPv6 支持,并允许 mongostat 使用 IPv6 网络连接到 MongoDB 实例。在 MongoDB 3.0 之前,您必须指定--ipv6才能使用 IPv6.在 MongoDB 3.0 和更高版本中,始终启用 IPv6.
--ssl
``- 2.6 版的新功能。
启用与启用了 TLS/SSL 支持的mongod或mongos的连接。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslCAFile
<filename>
- 2.6 版的新功能。
指定包含来自证书颁发机构的根证书链的.pem
文件。使用相对或绝对路径指定.pem
文件的文件名。
从 3.4 版开始,如果未指定--sslCAFile
或ssl.CAFile
并且未使用 x.509 身份验证,则在连接到启用了 TLS/SSL 的服务器时将使用系统范围的 CA 证书存储。
如果使用 x.509 身份验证,则必须指定--sslCAFile
或ssl.CAFile
。
Warning
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslPEMKeyFile
<filename>
- 2.6 版的新功能。
指定同时包含 TLS/SSL 证书和密钥的.pem
文件。使用相对或绝对路径指定.pem
文件的文件名。
使用--ssl选项连接到已启用CAFile且未启用allowConnectionsWithoutCertificates的mongod或mongos时,此选项是必需的。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslPEMKeyPassword
<value>
- 2.6 版的新功能。
指定用于解密证书密钥文件的密码(即--sslPEMKeyFile)。仅当证书密钥文件已加密时,才使用--sslPEMKeyPassword选项。在所有情况下, mongostat 都会从所有日志记录和报告输出中删除密码。
如果 PEM 文件中的私钥已加密,并且您未指定--sslPEMKeyPassword选项,则 mongostat 将提示您 Importing 密码。参见TLS/SSL 证书密码短语。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslCRLFile
<filename>
- 2.6 版的新功能。
指定包含证书吊销列表的.pem
文件。使用相对或绝对路径指定.pem
文件的文件名。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslAllowInvalidCertificates
``- 2.6 版的新功能。
绕过服务器证书的验证检查,并允许使用无效的证书。使用allowInvalidCertificates设置时,MongoDB 将使用无效证书记录为警告。
从 MongoDB 3.6.6 开始,如果在使用 x.509 身份验证时指定--sslAllowInvalidCertificates
或ssl.allowInvalidCertificates: true
,则无效的证书仅足以构建 TLS/SSL 连接,而对于身份验证则“不足”。
Warning
对于与mongod和mongos的 TLS/SSL 连接,请尽可能避免使用--sslAllowInvalidCertificates
,并且仅在不可能进行入侵的系统上使用--sslAllowInvalidCertificates
。
如果mongo shell(和其他MongoDB Tools)与--sslAllowInvalidCertificates
选项一起运行,则mongo shell(和其他MongoDB Tools)将不会尝试验证服务器证书。这对过期的mongod和mongos证书以及冒充有效的mongod或mongos实例的外部进程造成了漏洞。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslAllowInvalidHostnames
``- 3.0 版中的新功能。
禁用 TLS/SSL 证书中的主机名验证。允许 mongostat 连接到 MongoDB 实例,即使其证书中的主机名与指定的主机名不匹配也是如此。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslFIPSMode
``- 2.6 版的新功能。
指示 mongostat 使用已安装的 OpenSSL 库的 FIPS 模式。您的系统必须具有符合 FIPS 的 OpenSSL 库,才能使用--sslFIPSMode选项。
Note
兼容 FIPS 的 TLS/SSL 仅在MongoDB Enterprise中可用。有关更多信息,请参见为 FIPS 配置 MongoDB。
--username
<username>
,
-u
<username>
- 指定用于对使用身份验证的 MongoDB 数据库进行身份验证的用户名。与--password和--authenticationDatabase选项结合使用。
Note
您不能同时指定--username和--uri。
--password
<password>
,
-p
<password>
- 指定用于对使用身份验证的 MongoDB 数据库进行身份验证的密码。与--username和--authenticationDatabase选项结合使用。
在版本 3.0.2 中进行了更改:要提示用户 Importing 密码,请传递不带--password的--username选项,或者像--password ""
一样将空字符串指定为--password值。
Note
您不能同时指定--password和--uri。
--authenticationDatabase
<dbname>
- 指定已在其中创建指定的--username的身份验证数据库。参见Authentication Database。
Note
您不能同时指定--authenticationDatabase和--uri。
使用Authentication的mongod和mongos实例需要--authenticationDatabase。
--authenticationMechanism
<name>
- 默认:SCRAM-SHA-1
在 2.6 版中进行了更改:添加了对PLAIN
和MONGODB-X509
身份验证机制的支持。
在版本 3.0 中进行了更改:添加了对SCRAM-SHA-1
身份验证机制的支持。将默认机制更改为SCRAM-SHA-1
。
指定 mongostat 实例用来验证mongod或mongos的验证机制。
Value | Description |
---|---|
SCRAM-SHA-1 | RFC 5802使用 SHA1 哈希函数的标准咸化挑战响应身份验证机制。 |
MONGODB-CR | MongoDB 质询/响应身份验证。 (* MongoDB 3.6 中已弃用*) |
MONGODB-X509 | MongoDB TLS/SSL 证书认证。 |
GSSAPI (Kerberos) | 使用 Kerberos 的外部身份验证。此机制仅在MongoDB Enterprise中可用。 |
PLAIN(LDAP SASL) | 使用 LDAP 的外部身份验证。您也可以使用PLAIN 对数据库中的用户进行身份验证。 PLAIN 以纯文本形式传输密码。此机制仅在MongoDB Enterprise中可用。 |
Note
您不能同时指定--authenticationMechanism和--uri。
--gssapiServiceName
``- 2.6 版的新功能。
使用GSSAPI/Kerberos指定服务的名称。仅当服务未使用默认名称mongodb
时才需要。
此选项仅在 MongoDB Enterprise 中可用。
--gssapiHostName
``- 2.6 版的新功能。
使用GSSAPI/Kerberos指定服务的主机名。 仅如果计算机的主机名与 DNS 解析的主机名不匹配。
此选项仅在 MongoDB Enterprise 中可用。
--humanReadable
boolean
- 默认:true
3.4 版的新功能。
当true
时, mongostat 格式化日期和数量值以便于阅读,如以下示例输出所示:
insert query update delete getmore command dirty used flushes vsize res qrw arw net_in net_out conn time
991 *0 *0 *0 0 2|0 3.4% 4.5% 0 2.90G 297M 0|0 0|0 12.9m 84.2k 2 Oct 6 09:45:37.478
989 *0 *0 *0 0 2|0 3.6% 4.7% 0 2.91G 310M 0|0 0|0 12.9m 84.1k 2 Oct 6 09:45:38.476
988 *0 *0 *0 0 1|0 3.7% 4.8% 0 2.92G 323M 0|0 0|0 12.8m 83.8k 2 Oct 6 09:45:39.481
976 *0 *0 *0 0 2|0 3.9% 5.0% 0 2.94G 335M 0|0 0|0 12.7m 83.7k 2 Oct 6 09:45:40.476
当false
时, mongostat 返回原始数据,如以下示例输出所示:
insert query update delete getmore command dirty used flushes vsize res qrw arw net_in net_out conn time
992 *0 *0 *0 0 2|0 1.3 2.4 0 2941255680 149946368 0|0 0|0 12913607 84271 2 2016-10-06T09:45:25-04:00
989 *0 *0 *0 0 1|0 1.5 2.6 0 2974810112 163577856 0|0 0|0 12873225 84087 2 2016-10-06T09:45:26-04:00
996 *0 *0 *0 0 1|0 1.6 2.8 0 2972712960 177209344 0|0 0|0 12955423 84345 2 2016-10-06T09:45:27-04:00
987 *0 *0 *0 0 1|0 1.8 2.9 0 2989490176 190840832 0|0 0|0 12861852 84008 2 2016-10-06T09:45:28-04:00
-o
<field list>
- 3.4 版的新功能。
指定后, mongostat 仅包括 mongostat 输出中的指定字段。
使用点表示法指定serverStatus fields,如metrics.document.inserted。
要为字段指定自定义名称,请使用<field>=<customName>
,如下所示:
mongostat -o 'host=H,time=T,version=MongoDB Version'
-o支持以下方法来修改为给定 serverStatus 字段返回的信息:
使用.rate()查看字段的变化率说明了如何将mongostat与-o和.rate()方法一起使用。
.diff()的视野变化说明了如何将mongostat与-o和.diff()方法一起使用。
mongostat 支持指定* -o或-O:您不能同时包含这两个选项。
有关-o的示例,请参见指定 mongostat 输出字段。
-O
<field list>
- 3.4 版的新功能。
指定后, mongostat 将在默认 mongostat 输出之后包括指定的serverStatus字段。
使用点表示法指定serverStatus fields,如metrics.document.inserted。
要为字段指定自定义名称,请使用<field>=<customName>
,如下所示:
mongostat -O host=H,time=T
mongostat 支持指定* -O或-o:您不能同时包含这两个选项。
有关-O的示例,请参见将字段添加到 mongostat 输出。
--noheaders
``- 禁用列或字段名称的输出。
--rowcount
<number>
,
-n
<number>
- 控制要输出的行数。与
sleeptime
参数一起使用可控制mongostat操作的持续时间。
- 控制要输出的行数。与
除非指定--rowcount,否则mongostat将返回无数行(例如0
的值)。
--discover
``- 从replica set或sharded cluster的所有成员中发现并报告统计信息。当连接到副本集的任何成员时,副本集的全部--discover非hidden members。连接到mongos时,mongostat将返回集群中所有shards的数据。如果副本集在分片群集中提供了分片,则mongostat将报告该副本集的非隐藏成员。
mongostat --host选项不是必需的,但在这种情况下可能很有用。
在 2.6 版中进行了更改:与--discover一起运行时,mongostat现在尊重--rowcount。
--http
``- 配置mongostat以使用 HTTP 接口而不是原始数据库连接来收集数据。
在版本 3.6 中进行了更改:MongoDB 3.6 删除了 MongoDB 弃用的 HTTP 接口和 REST API。
以JSON格式返回 mongostat 的输出。
--interactive
``- 3.4 版的新功能。
在交互式非滚动界面中显示 mongostat 输出,而不是默认的滚动输出。
--interactive不适用于--json选项。
参见:在交互式界面中查看统计信息有关--interactive的示例。
<sleeptime>
``- 默认:1
最后一个 mongostat 参数是mongostat在两次调用之间 await 的时间长度(以秒为单位)。默认情况下,mongostat每秒钟返回一次呼叫。
mongostat返回的值反映 1 秒钟内的操作。对于<sleeptime>
大于 1 的值,mongostat对数据进行平均以反映每秒的平均操作数。
Fields
mongostat返回的值反映 1 秒钟内的操作。当 mongostat 的值大于 1 时,mongostat对统计数据取平均值以反映每秒的平均操作数。
mongostat输出以下字段:
inserts
- 每秒插入数据库中的对象数。如果后跟一个星号(例如
*
),则该基准表示重复的操作。
- 每秒插入数据库中的对象数。如果后跟一个星号(例如
query
- 每秒查询操作数。
update
- 每秒的更新操作数。
delete
- 每秒删除操作的数量。
getmore
- 每秒获得更多(即批处理光标)操作的次数。
command
flushes
- 在版本 3.0 中更改。
对于WiredTiger 存储引擎,flushes
是指每个轮询间隔之间触发的 WiredTiger 检查点的数量。
对于MMAPv1 存储引擎,flushes
表示每秒fsync次操作。
dirty
- 3.0 版中的新功能。
仅适用于WiredTiger 存储引擎。由wireTiger.cache.tracked 缓存中的脏字节/已配置 wiredTiger.cache.maximum 字节计算得出的带有脏字节的 WiredTiger 缓存的百分比。
used
- 3.0 版中的新功能。
仅适用于WiredTiger 存储引擎。正在使用的 WiredTiger 缓存的百分比,由当前在缓存中的 wiredTiger.cache.bytes/已配置 wiredTiger.cache.maximum 字节计算得出。
mapped
- 在版本 3.0 中更改。
仅适用于MMAPv1 存储引擎。Map 的数据总量(以兆字节为单位)。这是上次mongostat调用时的总数据大小。
vsize
- 上一次mongostat调用时,进程使用的虚拟内存量(以兆字节为单位)。
non-mapped
- 在版本 3.0 中更改。
仅适用于MMAPv1 存储引擎。
可选的 。在上一次mongostat调用时,虚拟内存总量(不包括所有 Map 的内存)。
res
- 上一次mongostat调用时进程使用的驻留内存量(以兆字节为单位)。
faults
- 在版本 3.0 中更改。
仅适用于MMAPv1 存储引擎。每秒的页面错误数。
在版本 2.1 中进行了更改:在版本 2.1 之前,仅为在 Linux 主机上运行的 MongoDB 实例提供此值。
lr
- 3.2 版中的新功能。
仅适用于MMAPv1 存储引擎。必须 await 的读取锁定获取的百分比。如果 await 锁获取,则mongostat显示lr|lw
。
lw
- 3.2 版中的新功能。
仅适用于MMAPv1 存储引擎。必须 await 的写锁定获取的百分比。如果 await 锁获取,则mongostat显示lr|lw
。
lrt
- 3.2 版中的新功能。
仅适用于MMAPv1 存储引擎。await 的读取锁定获取的平均获取时间(以微秒为单位)。如果 await 锁获取,则mongostat显示lrt|lwt
。
lwt
- 3.2 版中的新功能。
仅适用于MMAPv1 存储引擎。await 的写锁定获取的平均获取时间(以微秒为单位)。如果 await 锁获取,则mongostat显示lrt|lwt
。
locked
- 在 3.0 版中进行了更改:仅当mongostat在 3.0 之前的 MongoDB 实例版本上运行时才会显示。
全局写锁定中的时间百分比。
idx miss
- 在版本 3.0 中更改。
仅适用于MMAPv1 存储引擎。需要页面错误才能加载 btree 节点的索引访问尝试的百分比。这是一个采样值。
qr
- await 从 MongoDB 实例读取数据的 Client 端队列的长度。
qw
- await 从 MongoDB 实例写入数据的 Client 端队列的长度。
ar
- 执行读取操作的活动 Client 端数。
aw
- 执行写操作的活动 Client 端数。
netIn
- MongoDB 实例接收的网络流量(以字节为单位)。
其中包括来自mongostat本身的流量。
netOut
- MongoDB 实例发送的网络流量(以字节为单位)。
其中包括来自mongostat本身的流量。
conn
- 打开的连接总数。
set
- 副本集的名称(如果适用)。
repl
- 成员的复制状态。
Value | Replication Type |
M | master |
SEC | secondary |
REC | recovering |
UNK | unknown |
SLV | slave |
RTR | mongos 进程(“Router”) |
ARB | arbiter |
Examples
指定 mongostat 的收集周期和频率
在第一个示例中,mongostat将每秒 20 秒返回一次数据。 mongostat从端口 27017 的 localhost 接口上运行的mongod实例收集数据。以下所有调用均产生相同的行为:
mongostat --rowcount 20 1
mongostat --rowcount 20
mongostat -n 20 1
mongostat -n 20
在下一个示例中,只要程序运行,mongostat每 5 分钟(或 300 秒)返回一次数据。 mongostat从端口27017
上的 localhost 接口上运行的mongod实例收集数据。以下调用产生相同的行为:
mongostat --rowcount 0 300
mongostat -n 0 300
mongostat 300
在下面的示例中,mongostat每 5 分钟返回一次数据(共 12 次)。(一次 12 次.)mongostat从端口 27017 的 localhost 接口上运行的mongod实例中收集数据。以下调用产生相同的行为:
mongostat --rowcount 12 300
mongostat -n 12 300
将字段添加到 mongostat 输出
3.4 版的新功能。
-O允许您指定serverStatus输出中的字段以添加到默认的mongostat输出中。下面的示例将host和version字段以及network.numRequests字段(将显示为“网络请求”)添加到默认的mongostat输出中:
mongostat -O 'host,version,network.numRequests=network requests'
mongostat的输出类似于:
insert query update delete getmore command dirty used flushes vsize res qrw arw net_in net_out conn time host version network requests
*0 *0 *0 *0 0 2|0 0.0% 0.0% 0 2.51G 19.0M 0|0 0|0 158b 39.4k 2 Oct 11 12:14:45.878 localhost:37017 3.3.14 91
*0 *0 *0 *0 0 1|0 0.0% 0.0% 0 2.51G 19.0M 0|0 0|0 157b 39.3k 2 Oct 11 12:14:46.879 localhost:37017 3.3.14 95
*0 *0 *0 *0 0 1|0 0.0% 0.0% 0 2.51G 19.0M 0|0 0|0 157b 39.2k 2 Oct 11 12:14:47.884 localhost:37017 3.3.14 99
指定 mongostat 输出字段
3.4 版的新功能。
-o指定mongostat包含在其输出中的列。您可以将任何serverStatus字段指定为mongostat输出列。下面的示例指定host,time和metrics.document.inserted字段:
mongostat -o 'host,time,metrics.document.inserted'
mongostat的输出类似于:
host time metrics.document.inserted
localhost:37017 Oct 11 12:21:17.370 0
localhost:37017 Oct 11 12:21:18.371 0
localhost:37017 Oct 11 12:21:19.371 0
localhost:37017 Oct 11 12:21:20.368 0
使用.rate()查看字段的变化率
3.4 版的新功能。
.rate()使您可以查看数字字段从一个mongostat呼叫更改为下一呼叫的每秒速率。例如,您可以查看在插入操作期间插入文档的速率。 .rate()因此可以帮助您查看mongod实例的性能。
以下示例报告了metrics.document.inserted serverStatus字段的变化率。调用使用-o的能力来指定列名称,以将metrics.document.inserted.rate()
标记为“插入速率”,将metrics.document.inserted
标记为“插入速率”:
mongostat -o 'host,mem,bits,metrics.document.inserted.rate()=inserted rate,metrics.document.inserted=inserted' --rowcount 5
输出将类似于:
host mem.bits inserted rate inserted
localhost:37017 64 501 3455
localhost:37017 64 967 13128
localhost:37017 64 972 22851
localhost:37017 64 214 25000
localhost:37017 64 0 25000
使用.diff()更改视图字段
3.4 版的新功能。
.diff()返回当前serverStatus字段值与上一个mongostat调用中的值之间的差。下面的示例返回有关要插入到集合中的文档数量的统计信息:inserted diff
是后续调用之间metrics.document.inserted字段中的差异,而inserted
是metrics.document.inserted的值:
mongostat -o 'host,mem.bits,metrics.document.inserted.diff()=inserted diff,metrics.document.inserted=inserted' --rowcount 5
输出将类似于:
host mem.bits inserted diff inserted
localhost:27017 64 0 25359
localhost:27017 64 94 25453
localhost:27017 64 938 26391
localhost:27017 64 964 27355
localhost:27017 64 978 28333
查看副本集或分片群集的统计信息
在许多情况下,使用--discover选项将有助于提供整个计算机组状态的更完整快照。如果连接到sharded cluster的mongos进程正在本地计算机的端口27017
上运行,则可以使用以下形式从群集的所有成员返回统计信息:
mongostat --discover
在交互式界面中查看统计信息
3.4 版的新功能。
使用--interactive选项可在非滚动ncurses风格的交互式输出中查看统计信息。 --interactive选项使您可以突出显示要查看的特定主机,列或字段。与--discover结合使用时,--interactive显示副本集或分片群集的所有成员的统计信息,如以下示例所示:
mongostat --discover --interactive
分片群集的输出将类似于:
host insert query update delete getmore command dirty used flushes mapped vsize res faults qrw arw net_in net_out conn set repl time
hostname.local:27018 *0 *0 *0 *0 0 1|0 0.0% 0.0% 0 3.25G 25.0M n/a 0|0 1|0 157b 43.9k 19 tic PRI Nov 2 11:44:46.439
hostname.local:27019 *0 *0 *0 *0 0 2|0 0.0% 0.0% 0 3.18G 26.0M n/a 0|0 1|0 322b 44.4k 12 tic SEC Nov 2 11:44:46.439
hostname.local:27020 *0 *0 *0 *0 0 2|0 0.0% 0.0% 0 3.18G 26.0M n/a 0|0 1|0 322b 44.4k 12 tic SEC Nov 2 11:44:46.439
hostname.local:27021 2017 *0 *0 *0 826 1029|0 0.0% 0.0% 0 3.25G 31.0M n/a 0|0 1|0 1.74m 1.60m 20 tac PRI Nov 2 11:44:46.439
hostname.local:27022 *2021 *0 *0 *0 0 2|0 0.0% 0.0% 0 3.19G 32.0M n/a 0|0 1|0 322b 44.6k 12 tac SEC Nov 2 11:44:46.438
hostname.local:27023 *2022 *0 *0 *0 0 3|0 0.0% 0.0% 0 3.19G 33.0M n/a 0|0 1|0 323b 44.7k 12 tac SEC Nov 2 11:44:46.438
localhost:27017 2071 *0 *0 *0 0 2073|0 0 0B 2.43G 9.00M 0 0|0 0|0 249k 130k 4 RTR Nov 2 11:44:47.429
Press '?' to toggle help
Additional Information
有关监视 MongoDB 的更多信息,请参阅监控 MongoDB。
有关其他 MongoDB 状态输出的更多背景信息,请参见:
有关提供 MongoDBMetrics 的其他 Util,请参见mongotop。