Skip to content

Commit cf6baf6

Browse files
authored
DOCSP-42223-updates-performance-page (#9379) (#9469)
* Moves FTDC into its own page * Revises performance page to include Atlas * Updates table of contents to include FTDC page * Removes FTDC link from general perf page * Reformats page to closer match concept template (cherry picked from commit ded49f9)
1 parent 47ea5f9 commit cf6baf6

File tree

3 files changed

+164
-117
lines changed

3 files changed

+164
-117
lines changed

source/administration/analyzing-mongodb-performance.txt

Lines changed: 14 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,12 @@ affecting your performance, refer to the :ref:`server-status-locks`
4949
section and the :ref:`globalLock` section of the
5050
:dbcommand:`serverStatus` output.
5151

52+
.. note::
53+
Some ``serverStatus`` response fields are not returned on
54+
{+atlas+} M0/M2/M5 clusters. For more information, see
55+
:ref:`free-shard-commands-with-limits` in the {+atlas+}
56+
documentation.
57+
5258
Dividing :serverstatus:`locks.<type>.timeAcquiringMicros` by
5359
:serverstatus:`locks.<type>.acquireWaitCount`
5460
can give an approximate average wait time for a particular lock mode.
@@ -102,135 +108,26 @@ reuse connections more efficiently. An extremely high number of
102108
connections, particularly without corresponding workload, is often
103109
indicative of a driver or other configuration error.
104110

111+
Self-Managed Connection Limits
112+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
113+
105114
Unless constrained by system-wide limits, the maximum number of
106115
incoming connections supported by MongoDB is configured with the
107116
:setting:`~net.maxIncomingConnections` setting. On Unix-based systems,
108117
system-wide limits can be modified using the ``ulimit`` command, or by
109118
editing your system's ``/etc/sysctl`` file. See :ref:`ulimit`
110119
for more information.
111120

112-
.. _ftdc-stub:
113-
114-
Full Time Diagnostic Data Capture
115-
---------------------------------
116-
117-
To help MongoDB engineers analyze server behavior, :binary:`~bin.mongod` and
118-
:binary:`~bin.mongos` processes include a Full Time Diagnostic Data
119-
Capture (FTDC) mechanism. FTDC is enabled by default. Due to its
120-
importance in debugging deployments, FTDC thread failures are fatal and
121-
stop the parent ``mongod`` or ``mongos`` process.
122-
123-
.. important:: FTDC Privacy
124-
125-
FTDC data files are compressed and not human-readable. They inherit
126-
the same file access permissions as the MongoDB data files. Only
127-
users with access to FTDC data files can transmit the FTDC data.
128-
129-
MongoDB engineers cannot access FTDC data without explicit
130-
permission and assistance from system owners or operators.
131-
132-
FTDC data **never** contains any of the following information:
133-
134-
- Samples of queries, query predicates, or query results
135-
- Data sampled from any end-user collection or index
136-
- System or MongoDB user credentials or security certificates
137-
138-
FTDC data contains certain host machine information such as
139-
hostnames, operating system information, and the options or settings
140-
used to start the :binary:`mongod <bin.mongod>` or
141-
:binary:`mongos <bin.mongos>`. This information may be
142-
considered protected or confidential by some organizations or
143-
regulatory bodies, but is not typically considered to be Personally
144-
Identifiable Information (PII). For clusters where these fields are
145-
configured with protected, confidential, or PII data, please notify
146-
MongoDB engineers before sending FTDC data to coordinate
147-
appropriate security measures.
148-
149-
.. note:: FTDC User Permissions on Windows
150-
151-
.. include:: /includes/fact-ftdc-windows-user-permissions.rst
152-
153-
FTDC periodically collects statistics produced by the following
154-
commands:
155-
156-
- :dbcommand:`serverStatus`
157-
- :dbcommand:`replSetGetStatus` (:binary:`mongod <bin.mongod>` only)
158-
- :dbcommand:`collStats` for the :data:`local.oplog.rs` collection (:binary:`mongod <bin.mongod>` only)
159-
- :dbcommand:`connPoolStats` (:binary:`mongos <bin.mongos>` only)
160-
161-
Depending on the host operating system, the diagnostic data may include
162-
one or more of the following utilization statistics:
163-
164-
- CPU utilization
165-
- Memory utilization
166-
- Disk utilization related to performance. FTDC does not include
167-
data related to storage capacity.
168-
- Network performance statistics. FTDC only captures metadata and
169-
does not capture or inspect any network packets.
170-
171-
.. note::
172-
173-
If the :binary:`~bin.mongod` process runs in a :term:`container`, FTDC
174-
reports utilization statistics from the perspective of the container
175-
instead of the host operating system. For example, if a the
176-
:binary:`~bin.mongod` runs in a container that is configured with RAM
177-
restrictions, FTDC calculates memory utilization against the container's
178-
RAM limit, as opposed to the host operating system's RAM limit.
179-
180-
FTDC collects statistics produced by the following commands on
181-
file rotation or startup:
182-
183-
- :dbcommand:`getCmdLineOpts`
184-
- :dbcommand:`buildInfo`
185-
- :dbcommand:`hostInfo`
186-
187-
:binary:`mongod <bin.mongod>` processes store FTDC data files in a
188-
``diagnostic.data`` directory under the instances
189-
:setting:`storage.dbPath`. All diagnostic data files are stored
190-
under this directory. For example, given a :setting:`~storage.dbPath`
191-
of ``/data/db``, the diagnostic data directory would be
192-
``/data/db/diagnostic.data``.
193-
194-
:binary:`mongos <bin.mongos>` processes store FTDC data files in a
195-
diagnostic directory relative to the :setting:`systemLog.path` log
196-
path setting. MongoDB truncates the logpath's file extension and
197-
concatenates ``diagnostic.data`` to the remaining name. For example,
198-
given a :setting:`~systemLog.path` setting of
199-
``/var/log/mongodb/mongos.log``, the diagnostic data directory would be
200-
``/var/log/mongodb/mongos.diagnostic.data``.
201-
202-
You can view the FTDC source code on the
203-
`MongoDB Github Repository <https://github.com/mongodb/mongo/tree/master/src/mongo/db/ftdc>`_.
204-
The ``ftdc_system_stats_*.ccp`` files specifically define any
205-
system-specific diagnostic data captured.
206-
207-
FTDC runs with the following defaults:
208-
209-
- Data capture every 1 second
210-
- 200MB maximum ``diagnostic.data`` folder size.
211-
212-
These defaults are designed to provide useful data to MongoDB
213-
engineers with minimal impact on performance or storage size. These
214-
values only require modifications if requested by MongoDB engineers
215-
for specific diagnostic purposes.
216-
217-
To disable FTDC, start up the :binary:`mongod <bin.mongod>` or
218-
:binary:`mongos <bin.mongos>` with the
219-
``diagnosticDataCollectionEnabled: false`` option in the
220-
:setting:`setParameter` settings of your configuration file:
221-
222-
.. code-block:: yaml
121+
{+atlas+} Connection Limits
122+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
223123

224-
setParameter:
225-
diagnosticDataCollectionEnabled: false
124+
{+atlas+} sets the limit for concurrent incoming connections based on
125+
the cluster tier and class. To learn more, see :ref:`<connection-limits>`
126+
in the Atlas documentation.
226127

227-
Disabling FTDC may increase the time or resources required when
228-
analyzing or debugging issues with support from MongoDB engineers.
229-
For information on MongoDB Support, visit `Get Started With MongoDB Support <https://www.mongodb.com/support/get-started?tck=docs_server>`_.
230128

231129
.. toctree::
232130
:titlesonly:
233131
:hidden:
234132

235133
Connection Pool </administration/connection-pool-overview>
236-
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
.. _self-managed-ftdc:
2+
.. _ftdc-stub:
3+
4+
=================================
5+
Full Time Diagnostic Data Capture
6+
=================================
7+
8+
.. facet::
9+
:name: genre
10+
:values: reference
11+
12+
.. default-domain:: mongodb
13+
14+
.. contents:: On this page
15+
:local:
16+
:backlinks: none
17+
:depth: 1
18+
:class: singlecol
19+
20+
To help MongoDB engineers analyze server behavior, :binary:`~bin.mongod` and
21+
:binary:`~bin.mongos` processes include a Full Time Diagnostic Data
22+
Capture (FTDC) mechanism. FTDC is enabled by default. Due to its
23+
importance in debugging deployments, FTDC thread failures are fatal and
24+
stop the parent ``mongod`` or ``mongos`` process.
25+
26+
Behavior
27+
--------
28+
29+
.. note:: FTDC User Permissions on Windows
30+
31+
.. include:: /includes/fact-ftdc-windows-user-permissions.rst
32+
33+
FTDC periodically collects statistics produced by the following
34+
commands:
35+
36+
- :dbcommand:`serverStatus`
37+
- :dbcommand:`replSetGetStatus` (:binary:`mongod <bin.mongod>` only)
38+
- :dbcommand:`collStats` for the :data:`local.oplog.rs` collection (:binary:`mongod <bin.mongod>` only)
39+
- :dbcommand:`connPoolStats` (:binary:`mongos <bin.mongos>` only)
40+
41+
Depending on the host operating system, the diagnostic data may include
42+
one or more of the following utilization statistics:
43+
44+
- CPU utilization
45+
- Memory utilization
46+
- Disk utilization related to performance. FTDC does not include
47+
data related to storage capacity.
48+
- Network performance statistics. FTDC only captures metadata and
49+
does not capture or inspect any network packets.
50+
51+
.. note::
52+
53+
If the :binary:`~bin.mongod` process runs in a :term:`container`, FTDC
54+
reports utilization statistics from the perspective of the container
55+
instead of the host operating system. For example, if a the
56+
:binary:`~bin.mongod` runs in a container that is configured with RAM
57+
restrictions, FTDC calculates memory utilization against the container's
58+
RAM limit, as opposed to the host operating system's RAM limit.
59+
60+
FTDC collects statistics produced by the following commands on
61+
file rotation or startup:
62+
63+
- :dbcommand:`getCmdLineOpts`
64+
- :dbcommand:`buildInfo`
65+
- :dbcommand:`hostInfo`
66+
67+
FTDC Data Files
68+
~~~~~~~~~~~~~~~
69+
70+
:binary:`mongod <bin.mongod>` processes store FTDC data files in a
71+
``diagnostic.data`` directory under the instances
72+
:setting:`storage.dbPath`. All diagnostic data files are stored
73+
under this directory. For example, given a :setting:`~storage.dbPath`
74+
of ``/data/db``, the diagnostic data directory would be
75+
``/data/db/diagnostic.data``.
76+
77+
:binary:`mongos <bin.mongos>` processes store FTDC data files in a
78+
diagnostic directory relative to the :setting:`systemLog.path` log
79+
path setting. MongoDB truncates the logpath's file extension and
80+
concatenates ``diagnostic.data`` to the remaining name. For example,
81+
given a :setting:`~systemLog.path` setting of
82+
``/var/log/mongodb/mongos.log``, the diagnostic data directory would be
83+
``/var/log/mongodb/mongos.diagnostic.data``.
84+
85+
FTDC Privacy
86+
~~~~~~~~~~~~
87+
88+
FTDC data files are compressed and not human-readable. They inherit
89+
the same file access permissions as the MongoDB data files. Only
90+
users with access to FTDC data files can transmit the FTDC data.
91+
92+
MongoDB engineers cannot access FTDC data without explicit
93+
permission and assistance from system owners or operators.
94+
95+
FTDC data **never** contains any of the following information:
96+
97+
- Samples of queries, query predicates, or query results
98+
- Data sampled from any end-user collection or index
99+
- System or MongoDB user credentials or security certificates
100+
101+
FTDC data contains certain host machine information such as
102+
hostnames, operating system information, and the options or settings
103+
used to start the :binary:`mongod <bin.mongod>` or
104+
:binary:`mongos <bin.mongos>`. This information may be
105+
considered protected or confidential by some organizations or
106+
regulatory bodies, but is not typically considered to be Personally
107+
Identifiable Information (PII). For clusters where these fields are
108+
configured with protected, confidential, or PII data, please notify
109+
MongoDB engineers before sending FTDC data to coordinate
110+
appropriate security measures.
111+
112+
Details
113+
-------
114+
115+
You can view the FTDC source code on the
116+
`MongoDB Github Repository <https://github.com/mongodb/mongo/tree/master/src/mongo/db/ftdc>`_.
117+
The ``ftdc_system_stats_*.ccp`` files specifically define any
118+
system-specific diagnostic data captured.
119+
120+
FTDC Defaults
121+
~~~~~~~~~~~~~
122+
123+
FTDC runs with the following defaults:
124+
125+
- Data capture every 1 second
126+
- 200MB maximum ``diagnostic.data`` folder size.
127+
128+
These defaults are designed to provide useful data to MongoDB
129+
engineers with minimal impact on performance or storage size. These
130+
values only require modifications if requested by MongoDB engineers
131+
for specific diagnostic purposes.
132+
133+
Disable FTDC
134+
~~~~~~~~~~~~
135+
136+
To disable FTDC, start up the :binary:`mongod <bin.mongod>` or
137+
:binary:`mongos <bin.mongos>` with the
138+
``diagnosticDataCollectionEnabled: false`` option in the
139+
:setting:`setParameter` settings of your configuration file:
140+
141+
.. code-block:: yaml
142+
143+
setParameter:
144+
diagnosticDataCollectionEnabled: false
145+
146+
Disabling FTDC may increase the time or resources required when
147+
analyzing or debugging issues with support from MongoDB engineers.
148+
For information on MongoDB Support, visit `Get Started With MongoDB Support <https://www.mongodb.com/support/get-started?tck=docs_server>`_.
149+

source/administration/self-managed-performance.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@ Self-Managed Performance
1313
Disable Transparent Hugepages </tutorial/transparent-huge-pages>
1414
Health Managers </administration/health-managers>
1515
UNIX ulimit </reference/ulimit>
16+
Full Time Diagnostic Data Capture </administration/full-time-diagnostic-data-capture>

0 commit comments

Comments
 (0)