amps-python-client 5.3.4.1__zip → 5.3.4.3__zip
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- amps-python-client-5.3.4.3/LICENSE +168 -0
- amps-python-client-5.3.4.3/PKG-INFO +112 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/ack-messages.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/content-messages.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/intro.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/logon.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/protocol-reference.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/publishing.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/query-delimiters.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/query-subscribe.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/removing.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/utilities.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/.buildinfo +4 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/ack-messages.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/content-messages.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/intro.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/logon.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/protocol-reference.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/publishing.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/query-delimiters.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/query-subscribe.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/removing.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/utilities.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/index.rst.txt +36 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_static/custom.css +161 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/ack-messages.html +95 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/content-messages.html +95 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/intro.html +95 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/logon.html +95 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/protocol-reference.html +93 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/publishing.html +95 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/query-delimiters.html +95 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/query-subscribe.html +95 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/removing.html +95 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/utilities.html +95 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/genindex.html +97 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/index.html +98 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/objects.inv +6 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/search.html +107 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/searchindex.js +1 -0
- amps-python-client-5.3.4.3/docs/html/.buildinfo +4 -0
- amps-python-client-5.3.4.3/docs/html/code.html +6851 -0
- amps-python-client-5.3.4.3/docs/html/genindex.html +1363 -0
- amps-python-client-5.3.4.3/docs/html/index.html +131 -0
- amps-python-client-5.3.4.3/docs/html/objects.inv +0 -0
- amps-python-client-5.3.4.3/docs/html/py-modindex.html +111 -0
- amps-python-client-5.3.4.3/docs/html/search.html +107 -0
- amps-python-client-5.3.4.3/docs/html/searchindex.js +1 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/advanced-topics.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/cpp-compiler-list.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/cpp-feature-table.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/creating-commands.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/deltas.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/error-handling.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/exceptions.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/first-program.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/high-availability.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/installing.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/introduction.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/moving-from-python-lite.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/performance-tips.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/queues.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/sow.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/subscriptions.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/utilities.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/html/.buildinfo +4 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/advanced-topics.rst.txt +398 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/cpp-feature-table.rst.txt +26 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/creating-commands.rst.txt +159 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/deltas.rst.txt +79 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/error-handling.rst.txt +481 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/exceptions.rst.txt +123 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/first-program.rst.txt +168 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/high-availability.rst.txt +879 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/installing.rst.txt +184 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/introduction.rst.txt +50 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/moving-from-python-lite.rst.txt +32 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/performance-tips.rst.txt +432 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/queues.rst.txt +282 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/sow.rst.txt +294 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/subscriptions.rst.txt +374 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/utilities.rst.txt +214 -0
- amps-python-client-5.3.4.3/docs/python/html/_static/custom.css +161 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/advanced-topics.html +447 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/cpp-compiler-list.html +92 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/cpp-feature-table.html +156 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/creating-commands.html +2882 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/deltas.html +169 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/error-handling.html +745 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/exceptions.html +266 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/first-program.html +526 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/high-availability.html +1017 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/installing.html +264 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/introduction.html +245 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/moving-from-python-lite.html +118 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/performance-tips.html +499 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/queues.html +352 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/sow.html +383 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/subscriptions.html +535 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/utilities.html +302 -0
- amps-python-client-5.3.4.3/docs/python/html/genindex.html +351 -0
- amps-python-client-5.3.4.3/docs/python/html/index.html +382 -0
- amps-python-client-5.3.4.3/docs/python/html/objects.inv +0 -0
- amps-python-client-5.3.4.3/docs/python/html/search.html +107 -0
- amps-python-client-5.3.4.3/docs/python/html/searchindex.js +1 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/doctrees/chapters/crankitup.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/doctrees/chapters/equipment.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/html/.buildinfo +4 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/html/_static/custom.css +161 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/html/chapters/crankitup.html +271 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/html/chapters/equipment.html +105 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/html/genindex.html +97 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/html/index.html +381 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/html/objects.inv +0 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/html/search.html +107 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/html/searchindex.js +1 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/acks.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/actions.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/amps-statistics.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/amps_expressions.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/amps_functions.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/auxiliary_modules.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/config-file-shortcuts.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/conflated_topics.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/constructing-fields.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/daemon.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/delta.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/distribution.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/enrichment.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/events.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/file_format_versions.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/glossary.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/ha.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/installing_and_starting.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/intro.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/logging.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/messageTypes.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/monitoring.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/oof.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/operation.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/pub_sub.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/queues.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/replication.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/securing.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/sow.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/sow_queries.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/spark.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/transports.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/troubleshooting.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/txlog.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/usecases.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/utilities.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/views.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/.buildinfo +4 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/acks.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/actions.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/amps-statistics.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/amps_expressions.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/amps_functions.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/auxiliary_modules.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/config-file-shortcuts.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/conflated_topics.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/constructing-fields.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/daemon.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/delta.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/distribution.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/enrichment.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/events.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/file_format_versions.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/glossary.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/ha.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/installing_and_starting.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/intro.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/logging.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/messageTypes.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/monitoring.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/oof.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/operation.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/pub_sub.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/queues.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/replication.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/securing.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/sow.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/sow_queries.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/transports.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/troubleshooting.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/txlog.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/usecases.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/utilities.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/views.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/index.rst.txt +62 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_static/custom.css +161 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/acks.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/actions.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/amps-statistics.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/amps_expressions.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/amps_functions.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/auxiliary_modules.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/config-file-shortcuts.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/conflated_topics.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/constructing-fields.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/daemon.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/delta.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/distribution.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/enrichment.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/events.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/file_format_versions.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/glossary.html +92 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/ha.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/installing_and_starting.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/intro.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/logging.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/messageTypes.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/monitoring.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/oof.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/operation.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/pub_sub.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/queues.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/replication.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/securing.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/sow.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/sow_queries.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/spark.html +819 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/transports.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/troubleshooting.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/txlog.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/usecases.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/utilities.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/views.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/genindex.html +133 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/index.html +96 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/objects.inv +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/search.html +106 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/searchindex.js +1 -0
- amps-python-client-5.3.4.3/include/ampspy_bookmarkstore.hpp +63 -0
- amps-python-client-5.3.4.3/include/ampspy_compat.h +63 -0
- amps-python-client-5.3.4.3/include/ampspy_defs.hpp +181 -0
- amps-python-client-5.3.4.3/include/ampspy_recoverypointadapter.hpp +52 -0
- amps-python-client-5.3.4.3/include/ampspy_shims.hpp +113 -0
- amps-python-client-5.3.4.3/include/ampspy_type_object.hpp +242 -0
- amps-python-client-5.3.4.3/include/ampspy_types.hpp +1139 -0
- amps-python-client-5.3.4.3/include/ampspyver.h +30 -0
- amps-python-client-5.3.4.3/index.html +66 -0
- amps-python-client-5.3.4.3/samples/AMPSConsolePublisher.py +59 -0
- amps-python-client-5.3.4.3/samples/AMPSConsoleSubscriber.py +63 -0
- amps-python-client-5.3.4.3/samples/AMPSFIXBuilderPublisher.py +71 -0
- amps-python-client-5.3.4.3/samples/AMPSFIXShredderSubscriber.py +69 -0
- amps-python-client-5.3.4.3/samples/AMPSNVFIXBuilderPublisher.py +71 -0
- amps-python-client-5.3.4.3/samples/AMPSNVFIXShredderSubscriber.py +67 -0
- amps-python-client-5.3.4.3/samples/AMPSPublishForReplay.py +81 -0
- amps-python-client-5.3.4.3/samples/AMPSQueueConsumer.py +69 -0
- amps-python-client-5.3.4.3/samples/AMPSQueuePublisher.py +59 -0
- amps-python-client-5.3.4.3/samples/AMPSSOWConsolePublisher.py +67 -0
- amps-python-client-5.3.4.3/samples/AMPSSOWConsoleSubscriber.py +77 -0
- amps-python-client-5.3.4.3/samples/AMPSSOWandSubscribeConsoleSubscriber.py +79 -0
- amps-python-client-5.3.4.3/samples/AMPSSOWandSubscribeWithOOF.py +108 -0
- amps-python-client-5.3.4.3/samples/AMPSSubscribeForReplay.py +128 -0
- amps-python-client-5.3.4.3/samples/AMPSUpdateForOOF.py +123 -0
- amps-python-client-5.3.4.3/samples/CompositeMessagePublisher.py +84 -0
- amps-python-client-5.3.4.3/samples/CompositeMessageSubscriber.py +87 -0
- amps-python-client-5.3.4.3/samples/RandomServerChooser.py +66 -0
- amps-python-client-5.3.4.3/samples/sample.xml +335 -0
- amps-python-client-5.3.4.3/setup.py +210 -0
- amps-python-client-5.3.4.3/setup_amps.py +94 -0
- amps-python-client-5.3.4.3/src/ampspy_shims.cpp +214 -0
- amps-python-client-5.3.4.3/src/ampspy_type_object.cpp +495 -0
- amps-python-client-5.3.4.3/src/authenticator.cpp +128 -0
- amps-python-client-5.3.4.3/src/bookmarkstore.cpp +246 -0
- amps-python-client-5.3.4.3/src/client.cpp +2648 -0
- amps-python-client-5.3.4.3/src/client_docs.h +1210 -0
- amps-python-client-5.3.4.3/src/cmessagehandler.cpp +161 -0
- amps-python-client-5.3.4.3/src/command.cpp +164 -0
- amps-python-client-5.3.4.3/src/command_docs.h +274 -0
- amps-python-client-5.3.4.3/src/compositemessagebuilder.cpp +113 -0
- amps-python-client-5.3.4.3/src/compositemessageparser.cpp +151 -0
- amps-python-client-5.3.4.3/src/conflatingrecoverypointadapter.cpp +197 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/BlockPublishStore.hpp +2050 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/BlockStore.hpp +674 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/BookmarkStore.hpp +542 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/Buffer.hpp +214 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/CompositeMessageBuilder.hpp +174 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/CompositeMessageParser.hpp +151 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/DefaultServerChooser.hpp +162 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/Field.hpp +723 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/HAClient.hpp +370 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/HAClientImpl.hpp +460 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/HybridPublishStore.hpp +481 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/LoggedBookmarkStore.hpp +1256 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/MMapBookmarkStore.hpp +1283 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/MMapStoreBuffer.hpp +297 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/MemoryBookmarkStore.hpp +1628 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/MemoryPublishStore.hpp +66 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/MemoryStoreBuffer.hpp +247 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/MemorySubscriptionManager.hpp +850 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/Message.hpp +1827 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/MessageRouter.hpp +647 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/PublishStore.hpp +158 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/ReconnectDelayStrategy.hpp +106 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/ReconnectDelayStrategyImpl.hpp +317 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/RecoveryPoint.hpp +323 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/RecoveryPointAdapter.hpp +501 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/RingBookmarkStore.hpp +669 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/SOWRecoveryPointAdapter.hpp +494 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/ServerChooser.hpp +156 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/ServerChooserImpl.hpp +95 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/amps.h +815 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/amps_impl.h +220 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/amps_ssl.h +78 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/ampscrc.hpp +208 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/ampsplusplus.hpp +8846 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/ampsuri.h +84 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/ampsver.h +41 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/ampsver.h.in +41 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/constants.hpp +194 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/util.hpp +1722 -0
- amps-python-client-5.3.4.3/src/cpp/src/amps_protocol.c +693 -0
- amps-python-client-5.3.4.3/src/cpp/src/amps_ssl.c +565 -0
- amps-python-client-5.3.4.3/src/cpp/src/atfork.c +484 -0
- amps-python-client-5.3.4.3/src/cpp/src/client.c +498 -0
- amps-python-client-5.3.4.3/src/cpp/src/message.c +837 -0
- amps-python-client-5.3.4.3/src/cpp/src/message_generated.h +611 -0
- amps-python-client-5.3.4.3/src/cpp/src/tcp.c +1683 -0
- amps-python-client-5.3.4.3/src/cpp/src/tcps.c +2005 -0
- amps-python-client-5.3.4.3/src/cpp/src/transports.c +129 -0
- amps-python-client-5.3.4.3/src/cpp/src/unix.c +1063 -0
- amps-python-client-5.3.4.3/src/cpp/src/uri.c +301 -0
- amps-python-client-5.3.4.3/src/exponentialdelaystrategy.cpp +131 -0
- amps-python-client-5.3.4.3/src/failedwritehandler.cpp +116 -0
- amps-python-client-5.3.4.3/src/fixbuilder.cpp +146 -0
- amps-python-client-5.3.4.3/src/fixeddelaystrategy.cpp +115 -0
- amps-python-client-5.3.4.3/src/fixshredder.cpp +105 -0
- amps-python-client-5.3.4.3/src/fixshredder_docs.h +38 -0
- amps-python-client-5.3.4.3/src/haclient.cpp +691 -0
- amps-python-client-5.3.4.3/src/haclient_docs.h +200 -0
- amps-python-client-5.3.4.3/src/hybridpublishstore.cpp +137 -0
- amps-python-client-5.3.4.3/src/hybridpublishstore_docs.h +31 -0
- amps-python-client-5.3.4.3/src/memorybookmarkstore.cpp +373 -0
- amps-python-client-5.3.4.3/src/memorybookmarkstore_docs.h +39 -0
- amps-python-client-5.3.4.3/src/memorypublishstore.cpp +160 -0
- amps-python-client-5.3.4.3/src/memorypublishstore_docs.h +32 -0
- amps-python-client-5.3.4.3/src/message.cpp +765 -0
- amps-python-client-5.3.4.3/src/message_docs.h +306 -0
- amps-python-client-5.3.4.3/src/messagestream.cpp +630 -0
- amps-python-client-5.3.4.3/src/messagestream_docs.h +45 -0
- amps-python-client-5.3.4.3/src/mmapbookmarkstore.cpp +422 -0
- amps-python-client-5.3.4.3/src/nvfixbuilder.cpp +160 -0
- amps-python-client-5.3.4.3/src/nvfixbuilder_docs.h +35 -0
- amps-python-client-5.3.4.3/src/nvfixshredder.cpp +99 -0
- amps-python-client-5.3.4.3/src/nvfixshredder_docs.h +43 -0
- amps-python-client-5.3.4.3/src/publishstore.cpp +183 -0
- amps-python-client-5.3.4.3/src/raw_wrapper.cpp +765 -0
- amps-python-client-5.3.4.3/src/reason.cpp +71 -0
- amps-python-client-5.3.4.3/src/recoverypoint.cpp +135 -0
- amps-python-client-5.3.4.3/src/recoverypointadapter.cpp +171 -0
- amps-python-client-5.3.4.3/src/ringbookmarkstore.cpp +360 -0
- amps-python-client-5.3.4.3/src/serverchooser.cpp +245 -0
- amps-python-client-5.3.4.3/src/serverchooser_docs.h +41 -0
- amps-python-client-5.3.4.3/src/sowrecoverypointadapter.cpp +248 -0
- amps-python-client-5.3.4.3/src/store.cpp +62 -0
- amps-python-client-5.3.4.3/src/versioninfo.cpp +175 -0
- amps-python-client-5.3.4.1/LICENSE +0 -157
- amps-python-client-5.3.4.1/PKG-INFO +0 -112
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/ack-messages.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/content-messages.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/intro.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/logon.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/protocol-reference.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/publishing.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/query-delimiters.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/query-subscribe.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/removing.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/utilities.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/.buildinfo +0 -4
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/ack-messages.rst.txt +0 -32
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/content-messages.rst.txt +0 -27
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/intro.rst.txt +0 -43
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/logon.rst.txt +0 -231
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/protocol-reference.rst.txt +0 -1474
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/publishing.rst.txt +0 -25
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/query-delimiters.rst.txt +0 -12
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/query-subscribe.rst.txt +0 -23
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/removing.rst.txt +0 -6
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/utilities.rst.txt +0 -13
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/index.rst.txt +0 -56
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/custom.css +0 -192
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/custom.css.backup +0 -161
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/ack-messages.html +0 -417
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/content-messages.html +0 -417
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/intro.html +0 -126
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/logon.html +0 -295
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/protocol-reference.html +0 -1190
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/publishing.html +0 -436
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/query-delimiters.html +0 -173
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/query-subscribe.html +0 -2123
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/removing.html +0 -299
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/utilities.html +0 -287
- amps-python-client-5.3.4.1/docs/command-reference/html/genindex.html +0 -97
- amps-python-client-5.3.4.1/docs/command-reference/html/index.html +0 -138
- amps-python-client-5.3.4.1/docs/command-reference/html/objects.inv +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/search.html +0 -107
- amps-python-client-5.3.4.1/docs/command-reference/html/searchindex.js +0 -1
- amps-python-client-5.3.4.1/docs/html/.buildinfo +0 -4
- amps-python-client-5.3.4.1/docs/html/code.html +0 -6503
- amps-python-client-5.3.4.1/docs/html/genindex.html +0 -1361
- amps-python-client-5.3.4.1/docs/html/index.html +0 -131
- amps-python-client-5.3.4.1/docs/html/objects.inv +0 -0
- amps-python-client-5.3.4.1/docs/html/py-modindex.html +0 -111
- amps-python-client-5.3.4.1/docs/html/search.html +0 -107
- amps-python-client-5.3.4.1/docs/html/searchindex.js +0 -1
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/advanced-topics.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/cpp-compiler-list.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/cpp-feature-table.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/creating-commands.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/deltas.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/error-handling.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/exceptions.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/first-program.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/high-availability.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/installing.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/introduction.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/moving-from-python-lite.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/performance-tips.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/queues.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/sow.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/subscriptions.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/utilities.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/html/.buildinfo +0 -4
- amps-python-client-5.3.4.1/docs/python/html/_images/caution.svg +0 -25
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/advanced-topics.rst.txt +0 -398
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/cpp-feature-table.rst.txt +0 -26
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/creating-commands.rst.txt +0 -159
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/deltas.rst.txt +0 -79
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/error-handling.rst.txt +0 -482
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/exceptions.rst.txt +0 -128
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/first-program.rst.txt +0 -142
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/high-availability.rst.txt +0 -876
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/installing.rst.txt +0 -184
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/introduction.rst.txt +0 -50
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/moving-from-python-lite.rst.txt +0 -32
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/performance-tips.rst.txt +0 -434
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/queues.rst.txt +0 -282
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/sow.rst.txt +0 -292
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/subscriptions.rst.txt +0 -374
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/utilities.rst.txt +0 -214
- amps-python-client-5.3.4.1/docs/python/html/_static/custom.css +0 -192
- amps-python-client-5.3.4.1/docs/python/html/_static/custom.css.backup +0 -161
- amps-python-client-5.3.4.1/docs/python/html/chapters/advanced-topics.html +0 -447
- amps-python-client-5.3.4.1/docs/python/html/chapters/cpp-compiler-list.html +0 -92
- amps-python-client-5.3.4.1/docs/python/html/chapters/cpp-feature-table.html +0 -156
- amps-python-client-5.3.4.1/docs/python/html/chapters/creating-commands.html +0 -2837
- amps-python-client-5.3.4.1/docs/python/html/chapters/deltas.html +0 -169
- amps-python-client-5.3.4.1/docs/python/html/chapters/error-handling.html +0 -746
- amps-python-client-5.3.4.1/docs/python/html/chapters/exceptions.html +0 -272
- amps-python-client-5.3.4.1/docs/python/html/chapters/first-program.html +0 -499
- amps-python-client-5.3.4.1/docs/python/html/chapters/high-availability.html +0 -1014
- amps-python-client-5.3.4.1/docs/python/html/chapters/installing.html +0 -264
- amps-python-client-5.3.4.1/docs/python/html/chapters/introduction.html +0 -245
- amps-python-client-5.3.4.1/docs/python/html/chapters/moving-from-python-lite.html +0 -118
- amps-python-client-5.3.4.1/docs/python/html/chapters/performance-tips.html +0 -499
- amps-python-client-5.3.4.1/docs/python/html/chapters/queues.html +0 -352
- amps-python-client-5.3.4.1/docs/python/html/chapters/sow.html +0 -381
- amps-python-client-5.3.4.1/docs/python/html/chapters/subscriptions.html +0 -535
- amps-python-client-5.3.4.1/docs/python/html/chapters/utilities.html +0 -302
- amps-python-client-5.3.4.1/docs/python/html/genindex.html +0 -351
- amps-python-client-5.3.4.1/docs/python/html/index.html +0 -380
- amps-python-client-5.3.4.1/docs/python/html/objects.inv +0 -0
- amps-python-client-5.3.4.1/docs/python/html/search.html +0 -107
- amps-python-client-5.3.4.1/docs/python/html/searchindex.js +0 -1
- amps-python-client-5.3.4.1/docs/python-quickstart/doctrees/chapters/crankitup.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/doctrees/chapters/equipment.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/.buildinfo +0 -4
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/custom.css +0 -192
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/custom.css.backup +0 -161
- amps-python-client-5.3.4.1/docs/python-quickstart/html/chapters/crankitup.html +0 -271
- amps-python-client-5.3.4.1/docs/python-quickstart/html/chapters/equipment.html +0 -105
- amps-python-client-5.3.4.1/docs/python-quickstart/html/genindex.html +0 -97
- amps-python-client-5.3.4.1/docs/python-quickstart/html/index.html +0 -382
- amps-python-client-5.3.4.1/docs/python-quickstart/html/objects.inv +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/search.html +0 -107
- amps-python-client-5.3.4.1/docs/python-quickstart/html/searchindex.js +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/acks.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/actions.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/amps-statistics.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/amps_expressions.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/amps_functions.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/auxiliary_modules.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/config-file-shortcuts.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/conflated_topics.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/constructing-fields.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/daemon.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/delta.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/distribution.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/enrichment.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/events.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/file_format_versions.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/glossary.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/ha.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/installing_and_starting.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/intro.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/logging.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/messageTypes.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/monitoring.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/oof.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/operation.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/pub_sub.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/queues.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/replication.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/securing.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/sow.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/sow_queries.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/spark.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/transports.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/troubleshooting.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/txlog.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/usecases.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/utilities.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/views.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/.buildinfo +0 -4
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/AMPS-Queues-Intro.svg +0 -1330
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/GeoRepl.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/HA_async_ack.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/HA_sync_ack.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/Hot-Hot-Replication.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/MessageOrdering.svg +0 -235
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/OOF5.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/OOF6.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/OOF7.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/OOF8.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/PubSub1.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/PubSub2.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/SOWAndSubscribeAndReplace.svg +0 -684
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/SOWQuery1.svg +0 -402
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/SOWQuery2.svg +0 -505
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig1.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig2.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig3.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig4.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/caution.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/caution.svg +0 -25
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/chicago_group.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/delta_original_messages.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/delta_update_message.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/important.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/important.svg +0 -25
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/inline_view_conflation.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/paginated_subs_pub.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/paginated_subs_sub.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/queue_usage_overview.svg +0 -627
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/replication_hub.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/replication_scenario_with_ha.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/sow_overview_1.svg +0 -248
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/sow_overview_2.svg +0 -183
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/sow_update_sequence.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/tip.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/tip.svg +0 -31
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/warning.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/warning.svg +0 -23
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/acks.rst.txt +0 -232
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/actions.rst.txt +0 -111
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/amps-statistics.rst.txt +0 -358
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/amps_expressions.rst.txt +0 -83
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/amps_functions.rst.txt +0 -11
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/auxiliary_modules.rst.txt +0 -86
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/config-file-shortcuts.rst.txt +0 -9
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/conflated_topics.rst.txt +0 -111
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/constructing-fields.rst.txt +0 -269
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/daemon.rst.txt +0 -232
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/delta.rst.txt +0 -556
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/distribution.rst.txt +0 -186
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/enrichment.rst.txt +0 -191
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/events.rst.txt +0 -39
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/file_format_versions.rst.txt +0 -203
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/glossary.rst.txt +0 -101
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/ha.rst.txt +0 -465
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/installing_and_starting.rst.txt +0 -23
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/intro.rst.txt +0 -116
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/logging.rst.txt +0 -34
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/messageTypes.rst.txt +0 -1398
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/monitoring.rst.txt +0 -326
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/oof.rst.txt +0 -312
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/operation.rst.txt +0 -27
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/pub_sub.rst.txt +0 -49
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/queues.rst.txt +0 -1351
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/replication.rst.txt +0 -1228
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/securing.rst.txt +0 -657
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/sow.rst.txt +0 -57
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/sow_queries.rst.txt +0 -25
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/transports.rst.txt +0 -291
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/troubleshooting.rst.txt +0 -517
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/txlog.rst.txt +0 -62
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/usecases.rst.txt +0 -21
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/utilities.rst.txt +0 -62
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/views.rst.txt +0 -175
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/index.rst.txt +0 -110
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/custom.css +0 -192
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/custom.css.backup +0 -161
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/acks.html +0 -289
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/actions.html +0 -3782
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/amps-statistics.html +0 -439
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/amps_expressions.html +0 -1552
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/amps_functions.html +0 -1626
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/auxiliary_modules.html +0 -2548
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/config-file-shortcuts.html +0 -508
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/conflated_topics.html +0 -328
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/constructing-fields.html +0 -447
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/daemon.html +0 -295
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/delta.html +0 -609
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/distribution.html +0 -246
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/enrichment.html +0 -264
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/events.html +0 -449
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/file_format_versions.html +0 -229
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/glossary.html +0 -215
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/ha.html +0 -978
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/installing_and_starting.html +0 -357
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/intro.html +0 -572
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/logging.html +0 -972
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/messageTypes.html +0 -1280
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/monitoring.html +0 -718
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/oof.html +0 -341
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/operation.html +0 -1515
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/pub_sub.html +0 -934
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/queues.html +0 -1767
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/replication.html +0 -1777
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/securing.html +0 -697
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/sow.html +0 -1038
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/sow_queries.html +0 -621
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/spark.html +0 -819
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/transports.html +0 -352
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/troubleshooting.html +0 -530
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/txlog.html +0 -1013
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/usecases.html +0 -288
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/utilities.html +0 -133
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/views.html +0 -1120
- amps-python-client-5.3.4.1/docs/user-guide/html/genindex.html +0 -1261
- amps-python-client-5.3.4.1/docs/user-guide/html/index.html +0 -163
- amps-python-client-5.3.4.1/docs/user-guide/html/objects.inv +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/search.html +0 -106
- amps-python-client-5.3.4.1/docs/user-guide/html/searchindex.js +0 -1
- amps-python-client-5.3.4.1/include/ampspy_bookmarkstore.hpp +0 -63
- amps-python-client-5.3.4.1/include/ampspy_compat.h +0 -63
- amps-python-client-5.3.4.1/include/ampspy_defs.hpp +0 -181
- amps-python-client-5.3.4.1/include/ampspy_recoverypointadapter.hpp +0 -52
- amps-python-client-5.3.4.1/include/ampspy_shims.hpp +0 -113
- amps-python-client-5.3.4.1/include/ampspy_type_object.hpp +0 -242
- amps-python-client-5.3.4.1/include/ampspy_types.hpp +0 -1139
- amps-python-client-5.3.4.1/include/ampspyver.h +0 -30
- amps-python-client-5.3.4.1/index.html +0 -66
- amps-python-client-5.3.4.1/samples/AMPSConsolePublisher.py +0 -59
- amps-python-client-5.3.4.1/samples/AMPSConsoleSubscriber.py +0 -63
- amps-python-client-5.3.4.1/samples/AMPSFIXBuilderPublisher.py +0 -71
- amps-python-client-5.3.4.1/samples/AMPSFIXShredderSubscriber.py +0 -69
- amps-python-client-5.3.4.1/samples/AMPSNVFIXBuilderPublisher.py +0 -71
- amps-python-client-5.3.4.1/samples/AMPSNVFIXShredderSubscriber.py +0 -67
- amps-python-client-5.3.4.1/samples/AMPSPublishForReplay.py +0 -81
- amps-python-client-5.3.4.1/samples/AMPSQueueConsumer.py +0 -69
- amps-python-client-5.3.4.1/samples/AMPSQueuePublisher.py +0 -59
- amps-python-client-5.3.4.1/samples/AMPSSOWConsolePublisher.py +0 -67
- amps-python-client-5.3.4.1/samples/AMPSSOWConsoleSubscriber.py +0 -77
- amps-python-client-5.3.4.1/samples/AMPSSOWandSubscribeConsoleSubscriber.py +0 -79
- amps-python-client-5.3.4.1/samples/AMPSSOWandSubscribeWithOOF.py +0 -108
- amps-python-client-5.3.4.1/samples/AMPSSubscribeForReplay.py +0 -128
- amps-python-client-5.3.4.1/samples/AMPSUpdateForOOF.py +0 -123
- amps-python-client-5.3.4.1/samples/CompositeMessagePublisher.py +0 -84
- amps-python-client-5.3.4.1/samples/CompositeMessageSubscriber.py +0 -87
- amps-python-client-5.3.4.1/samples/RandomServerChooser.py +0 -41
- amps-python-client-5.3.4.1/samples/sample.xml +0 -335
- amps-python-client-5.3.4.1/setup.py +0 -209
- amps-python-client-5.3.4.1/setup_amps.py +0 -94
- amps-python-client-5.3.4.1/src/ampspy_shims.cpp +0 -203
- amps-python-client-5.3.4.1/src/ampspy_type_object.cpp +0 -484
- amps-python-client-5.3.4.1/src/authenticator.cpp +0 -128
- amps-python-client-5.3.4.1/src/bookmarkstore.cpp +0 -238
- amps-python-client-5.3.4.1/src/client.cpp +0 -2430
- amps-python-client-5.3.4.1/src/client_docs.h +0 -956
- amps-python-client-5.3.4.1/src/cmessagehandler.cpp +0 -151
- amps-python-client-5.3.4.1/src/command.cpp +0 -164
- amps-python-client-5.3.4.1/src/command_docs.h +0 -194
- amps-python-client-5.3.4.1/src/compositemessagebuilder.cpp +0 -111
- amps-python-client-5.3.4.1/src/compositemessageparser.cpp +0 -146
- amps-python-client-5.3.4.1/src/conflatingrecoverypointadapter.cpp +0 -194
- amps-python-client-5.3.4.1/src/cpp/include/amps/BlockPublishStore.hpp +0 -2053
- amps-python-client-5.3.4.1/src/cpp/include/amps/BlockStore.hpp +0 -677
- amps-python-client-5.3.4.1/src/cpp/include/amps/BookmarkStore.hpp +0 -542
- amps-python-client-5.3.4.1/src/cpp/include/amps/Buffer.hpp +0 -214
- amps-python-client-5.3.4.1/src/cpp/include/amps/CompositeMessageBuilder.hpp +0 -174
- amps-python-client-5.3.4.1/src/cpp/include/amps/CompositeMessageParser.hpp +0 -151
- amps-python-client-5.3.4.1/src/cpp/include/amps/DefaultServerChooser.hpp +0 -162
- amps-python-client-5.3.4.1/src/cpp/include/amps/Field.hpp +0 -719
- amps-python-client-5.3.4.1/src/cpp/include/amps/HAClient.hpp +0 -370
- amps-python-client-5.3.4.1/src/cpp/include/amps/HAClientImpl.hpp +0 -460
- amps-python-client-5.3.4.1/src/cpp/include/amps/HybridPublishStore.hpp +0 -481
- amps-python-client-5.3.4.1/src/cpp/include/amps/LoggedBookmarkStore.hpp +0 -1255
- amps-python-client-5.3.4.1/src/cpp/include/amps/MMapBookmarkStore.hpp +0 -1283
- amps-python-client-5.3.4.1/src/cpp/include/amps/MMapStoreBuffer.hpp +0 -290
- amps-python-client-5.3.4.1/src/cpp/include/amps/MemoryBookmarkStore.hpp +0 -1622
- amps-python-client-5.3.4.1/src/cpp/include/amps/MemoryPublishStore.hpp +0 -66
- amps-python-client-5.3.4.1/src/cpp/include/amps/MemoryStoreBuffer.hpp +0 -244
- amps-python-client-5.3.4.1/src/cpp/include/amps/MemorySubscriptionManager.hpp +0 -850
- amps-python-client-5.3.4.1/src/cpp/include/amps/Message.hpp +0 -1819
- amps-python-client-5.3.4.1/src/cpp/include/amps/MessageRouter.hpp +0 -618
- amps-python-client-5.3.4.1/src/cpp/include/amps/PublishStore.hpp +0 -158
- amps-python-client-5.3.4.1/src/cpp/include/amps/ReconnectDelayStrategy.hpp +0 -106
- amps-python-client-5.3.4.1/src/cpp/include/amps/ReconnectDelayStrategyImpl.hpp +0 -317
- amps-python-client-5.3.4.1/src/cpp/include/amps/RecoveryPoint.hpp +0 -323
- amps-python-client-5.3.4.1/src/cpp/include/amps/RecoveryPointAdapter.hpp +0 -501
- amps-python-client-5.3.4.1/src/cpp/include/amps/RingBookmarkStore.hpp +0 -669
- amps-python-client-5.3.4.1/src/cpp/include/amps/SOWRecoveryPointAdapter.hpp +0 -490
- amps-python-client-5.3.4.1/src/cpp/include/amps/ServerChooser.hpp +0 -145
- amps-python-client-5.3.4.1/src/cpp/include/amps/ServerChooserImpl.hpp +0 -95
- amps-python-client-5.3.4.1/src/cpp/include/amps/amps.h +0 -775
- amps-python-client-5.3.4.1/src/cpp/include/amps/amps_impl.h +0 -204
- amps-python-client-5.3.4.1/src/cpp/include/amps/amps_ssl.h +0 -78
- amps-python-client-5.3.4.1/src/cpp/include/amps/ampscrc.hpp +0 -210
- amps-python-client-5.3.4.1/src/cpp/include/amps/ampsplusplus.hpp +0 -8817
- amps-python-client-5.3.4.1/src/cpp/include/amps/ampsuri.h +0 -84
- amps-python-client-5.3.4.1/src/cpp/include/amps/ampsver.h +0 -41
- amps-python-client-5.3.4.1/src/cpp/include/amps/ampsver.h.in +0 -41
- amps-python-client-5.3.4.1/src/cpp/include/amps/constants.hpp +0 -194
- amps-python-client-5.3.4.1/src/cpp/include/amps/util.hpp +0 -1692
- amps-python-client-5.3.4.1/src/cpp/src/amps_protocol.c +0 -688
- amps-python-client-5.3.4.1/src/cpp/src/amps_ssl.c +0 -489
- amps-python-client-5.3.4.1/src/cpp/src/atfork.c +0 -446
- amps-python-client-5.3.4.1/src/cpp/src/client.c +0 -483
- amps-python-client-5.3.4.1/src/cpp/src/message.c +0 -837
- amps-python-client-5.3.4.1/src/cpp/src/message_generated.h +0 -611
- amps-python-client-5.3.4.1/src/cpp/src/tcp.c +0 -1489
- amps-python-client-5.3.4.1/src/cpp/src/tcps.c +0 -1894
- amps-python-client-5.3.4.1/src/cpp/src/transports.c +0 -123
- amps-python-client-5.3.4.1/src/cpp/src/unix.c +0 -984
- amps-python-client-5.3.4.1/src/cpp/src/uri.c +0 -301
- amps-python-client-5.3.4.1/src/exponentialdelaystrategy.cpp +0 -137
- amps-python-client-5.3.4.1/src/failedwritehandler.cpp +0 -116
- amps-python-client-5.3.4.1/src/fixbuilder.cpp +0 -146
- amps-python-client-5.3.4.1/src/fixeddelaystrategy.cpp +0 -114
- amps-python-client-5.3.4.1/src/fixshredder.cpp +0 -105
- amps-python-client-5.3.4.1/src/fixshredder_docs.h +0 -38
- amps-python-client-5.3.4.1/src/haclient.cpp +0 -691
- amps-python-client-5.3.4.1/src/haclient_docs.h +0 -132
- amps-python-client-5.3.4.1/src/hybridpublishstore.cpp +0 -137
- amps-python-client-5.3.4.1/src/hybridpublishstore_docs.h +0 -31
- amps-python-client-5.3.4.1/src/memorybookmarkstore.cpp +0 -373
- amps-python-client-5.3.4.1/src/memorybookmarkstore_docs.h +0 -39
- amps-python-client-5.3.4.1/src/memorypublishstore.cpp +0 -160
- amps-python-client-5.3.4.1/src/memorypublishstore_docs.h +0 -32
- amps-python-client-5.3.4.1/src/message.cpp +0 -765
- amps-python-client-5.3.4.1/src/message_docs.h +0 -306
- amps-python-client-5.3.4.1/src/messagestream.cpp +0 -623
- amps-python-client-5.3.4.1/src/messagestream_docs.h +0 -45
- amps-python-client-5.3.4.1/src/mmapbookmarkstore.cpp +0 -422
- amps-python-client-5.3.4.1/src/nvfixbuilder.cpp +0 -160
- amps-python-client-5.3.4.1/src/nvfixbuilder_docs.h +0 -33
- amps-python-client-5.3.4.1/src/nvfixshredder.cpp +0 -99
- amps-python-client-5.3.4.1/src/nvfixshredder_docs.h +0 -39
- amps-python-client-5.3.4.1/src/publishstore.cpp +0 -183
- amps-python-client-5.3.4.1/src/raw_wrapper.cpp +0 -756
- amps-python-client-5.3.4.1/src/reason.cpp +0 -71
- amps-python-client-5.3.4.1/src/recoverypoint.cpp +0 -135
- amps-python-client-5.3.4.1/src/recoverypointadapter.cpp +0 -171
- amps-python-client-5.3.4.1/src/ringbookmarkstore.cpp +0 -360
- amps-python-client-5.3.4.1/src/serverchooser.cpp +0 -245
- amps-python-client-5.3.4.1/src/serverchooser_docs.h +0 -39
- amps-python-client-5.3.4.1/src/sowrecoverypointadapter.cpp +0 -248
- amps-python-client-5.3.4.1/src/store.cpp +0 -62
- amps-python-client-5.3.4.1/src/versioninfo.cpp +0 -175
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/HISTORY +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/README.md +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/ajax-loader.gif +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/alabaster.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/basic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/comment-bright.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/comment-close.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/comment.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/doctools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/down-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/down.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/file.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/flag_logo.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/flag_logo.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/jquery-3.1.0.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/jquery.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/minus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/plus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/pygments.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/searchtools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/underscore-1.3.1.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/underscore.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/up-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/up.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/websupport.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_sources/code.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_sources/index.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/ajax-loader.gif +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/basic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/classic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/comment-bright.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/comment-close.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/comment.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/default.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/doctools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/down-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/down.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/file.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/jquery-3.1.0.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/jquery.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/minus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/plus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/pygments.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/searchtools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/sidebar.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/underscore-1.3.1.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/underscore.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/up-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/up.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/websupport.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_images/caution.png +0 -0
- {amps-python-client-5.3.4.1/docs/command-reference → amps-python-client-5.3.4.3/docs/python}/html/_images/caution.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_images/connection_string.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_images/important.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_images/important.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_images/tip.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_images/tip.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_images/warning.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_sources/chapters/cpp-compiler-list.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_sources/index.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/ajax-loader.gif +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/alabaster.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/basic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/comment-bright.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/comment-close.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/comment.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/doctools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/down-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/down.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/file.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/flag_logo.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/flag_logo.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/jquery-3.1.0.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/jquery.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/minus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/plus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/pygments.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/searchtools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/underscore-1.3.1.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/underscore.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/up-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/up.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/websupport.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_sources/chapters/crankitup.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_sources/chapters/equipment.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_sources/index.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/ajax-loader.gif +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/alabaster.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/basic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/comment-bright.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/comment-close.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/comment.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/doctools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/down-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/down.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/file.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/flag_logo.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/flag_logo.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/jquery-3.1.0.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/jquery.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/minus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/plus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/pygments.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/searchtools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/underscore-1.3.1.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/underscore.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/up-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/up.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/websupport.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/resources/custom.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/resources/flag_logo.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_sources/chapters/spark.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/ajax-loader.gif +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/alabaster.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/basic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/comment-bright.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/comment-close.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/comment.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/doctools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/down-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/down.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/file.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/flag_logo.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/flag_logo.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/jquery-3.1.0.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/jquery.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/minus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/plus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/pygments.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/searchtools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/underscore-1.3.1.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/underscore.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/up-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/up.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/websupport.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/src/cpp/include/amps/amps_generated.h +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/src/cpp/src/amps_protocol_generated.h +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/src/cpp/src/makefile +0 -0
|
@@ -1,1515 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
2
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
6
|
-
<head>
|
|
7
|
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
8
|
-
|
|
9
|
-
<title>27. Operation and Deployment — AMPS User Guide develop documentation</title>
|
|
10
|
-
|
|
11
|
-
<link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
|
|
12
|
-
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
|
13
|
-
|
|
14
|
-
<script type="text/javascript">
|
|
15
|
-
var DOCUMENTATION_OPTIONS = {
|
|
16
|
-
URL_ROOT: '../',
|
|
17
|
-
VERSION: 'develop',
|
|
18
|
-
COLLAPSE_INDEX: false,
|
|
19
|
-
FILE_SUFFIX: '.html',
|
|
20
|
-
HAS_SOURCE: true,
|
|
21
|
-
SOURCELINK_SUFFIX: '.txt'
|
|
22
|
-
};
|
|
23
|
-
</script>
|
|
24
|
-
<script type="text/javascript" src="../_static/jquery.js"></script>
|
|
25
|
-
<script type="text/javascript" src="../_static/underscore.js"></script>
|
|
26
|
-
<script type="text/javascript" src="../_static/doctools.js"></script>
|
|
27
|
-
<link rel="index" title="Index" href="../genindex.html" />
|
|
28
|
-
<link rel="search" title="Search" href="../search.html" />
|
|
29
|
-
<link rel="next" title="28. Securing AMPS" href="securing.html" />
|
|
30
|
-
<link rel="prev" title="26. Highly Available AMPS Installations" href="ha.html" />
|
|
31
|
-
|
|
32
|
-
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
|
36
|
-
|
|
37
|
-
</head>
|
|
38
|
-
<body role="document">
|
|
39
|
-
<div class="document">
|
|
40
|
-
|
|
41
|
-
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
|
42
|
-
<div class="sphinxsidebarwrapper">
|
|
43
|
-
<p class="logo"><a href="../index.html">
|
|
44
|
-
<img class="logo" src="../_static/flag_logo.png" alt="Logo"/>
|
|
45
|
-
</a></p>
|
|
46
|
-
<h3><a href="../index.html">Table Of Contents</a></h3>
|
|
47
|
-
<ul>
|
|
48
|
-
<li><a class="reference internal" href="#">27. Operation and Deployment</a><ul>
|
|
49
|
-
<li><a class="reference internal" href="#capacity-planning">Capacity Planning</a><ul>
|
|
50
|
-
<li><a class="reference internal" href="#system-goals-and-requirements">System Goals and Requirements</a><ul>
|
|
51
|
-
<li><a class="reference internal" href="#single-tenant-or-multi-tenant">Single-Tenant or Multi-Tenant</a></li>
|
|
52
|
-
<li><a class="reference internal" href="#physical-server-or-virtual-machines">Physical Server or Virtual Machines</a></li>
|
|
53
|
-
</ul>
|
|
54
|
-
</li>
|
|
55
|
-
<li><a class="reference internal" href="#memory">Memory</a><ul>
|
|
56
|
-
<li><a class="reference internal" href="#estimating-amps-instance-memory-usage">Estimating AMPS Instance Memory Usage</a></li>
|
|
57
|
-
<li><a class="reference internal" href="#estimating-overall-system-capacity">Estimating Overall System Capacity</a></li>
|
|
58
|
-
</ul>
|
|
59
|
-
</li>
|
|
60
|
-
<li><a class="reference internal" href="#storage">Storage</a><ul>
|
|
61
|
-
<li><a class="reference internal" href="#amps-log-files">AMPS Log Files</a></li>
|
|
62
|
-
<li><a class="reference internal" href="#sow-topics">SOW Topics</a></li>
|
|
63
|
-
<li><a class="reference internal" href="#transaction-logs">Transaction Logs</a></li>
|
|
64
|
-
<li><a class="reference internal" href="#file-backed-queue-metadata">File-Backed Queue Metadata</a></li>
|
|
65
|
-
<li><a class="reference internal" href="#choosing-storage-devices">Choosing Storage Devices</a></li>
|
|
66
|
-
</ul>
|
|
67
|
-
</li>
|
|
68
|
-
<li><a class="reference internal" href="#cpu">CPU</a></li>
|
|
69
|
-
<li><a class="reference internal" href="#network">Network</a><ul>
|
|
70
|
-
<li><a class="reference internal" href="#replication-network-bandwidth">Replication Network Bandwidth</a></li>
|
|
71
|
-
<li><a class="reference internal" href="#additional-network-considerations">Additional Network Considerations</a></li>
|
|
72
|
-
</ul>
|
|
73
|
-
</li>
|
|
74
|
-
<li><a class="reference internal" href="#numa-considerations">NUMA Considerations</a></li>
|
|
75
|
-
</ul>
|
|
76
|
-
</li>
|
|
77
|
-
<li><a class="reference internal" href="#linux-operating-system-configuration">Linux Operating System Configuration</a><ul>
|
|
78
|
-
<li><a class="reference internal" href="#ulimit">ulimit</a></li>
|
|
79
|
-
<li><a class="reference internal" href="#transparent-huge-pages">Transparent Huge Pages</a></li>
|
|
80
|
-
<li><a class="reference internal" href="#proc-sys-fs-aio-max-nr">/proc/sys/fs/aio-max-nr</a></li>
|
|
81
|
-
<li><a class="reference internal" href="#proc-sys-fs-file-max">/proc/sys/fs/file-max</a></li>
|
|
82
|
-
<li><a class="reference internal" href="#proc-sys-vm-min-free-kbytes">/proc/sys/vm/min_free_kbytes</a></li>
|
|
83
|
-
<li><a class="reference internal" href="#proc-sys-vm-max-map-count">/proc/sys/vm/max_map_count</a></li>
|
|
84
|
-
<li><a class="reference internal" href="#proc-sys-vm-swappiness">/proc/sys/vm/swappiness</a></li>
|
|
85
|
-
<li><a class="reference internal" href="#proc-sys-net-ipv4-tcp-frto">/proc/sys/net/ipv4/tcp_frto</a></li>
|
|
86
|
-
</ul>
|
|
87
|
-
</li>
|
|
88
|
-
<li><a class="reference internal" href="#upgrading-an-amps-installation">Upgrading an AMPS Installation</a><ul>
|
|
89
|
-
<li><a class="reference internal" href="#upgrade-steps">Upgrade Steps</a></li>
|
|
90
|
-
<li><a class="reference internal" href="#upgrading-amps-data-files">Upgrading AMPS Data Files</a></li>
|
|
91
|
-
<li><a class="reference internal" href="#downgrading-amps-data-files">Downgrading AMPS Data Files</a></li>
|
|
92
|
-
</ul>
|
|
93
|
-
</li>
|
|
94
|
-
<li><a class="reference internal" href="#best-practices">Best Practices</a><ul>
|
|
95
|
-
<li><a class="reference internal" href="#monitoring">Monitoring</a></li>
|
|
96
|
-
<li><a class="reference internal" href="#logging">Logging</a></li>
|
|
97
|
-
<li><a class="reference internal" href="#stopping-amps">Stopping AMPS</a></li>
|
|
98
|
-
<li><a class="reference internal" href="#sow-parameters">SOW Parameters</a></li>
|
|
99
|
-
<li><a class="reference internal" href="#slow-clients">Slow Clients</a><ul>
|
|
100
|
-
<li><a class="reference internal" href="#slow-client-offlining-for-large-result-sets">Slow Client Offlining for Large Result Sets</a></li>
|
|
101
|
-
<li><a class="reference internal" href="#wan-traffic-and-slow-client-settings">WAN Traffic and Slow Client Settings</a></li>
|
|
102
|
-
</ul>
|
|
103
|
-
</li>
|
|
104
|
-
<li><a class="reference internal" href="#minidump">Minidump</a></li>
|
|
105
|
-
<li><a class="reference internal" href="#deployment-and-upgrade-plan">Deployment and Upgrade Plan</a></li>
|
|
106
|
-
</ul>
|
|
107
|
-
</li>
|
|
108
|
-
<li><a class="reference internal" href="#accessing-amps-through-a-proxy">Accessing AMPS Through a Proxy</a><ul>
|
|
109
|
-
<li><a class="reference internal" href="#websocket-connections">Websocket Connections</a></li>
|
|
110
|
-
<li><a class="reference internal" href="#galvanometer-connections">Galvanometer Connections</a></li>
|
|
111
|
-
<li><a class="reference internal" href="#load-balancing-considerations">Load-Balancing Considerations</a></li>
|
|
112
|
-
</ul>
|
|
113
|
-
</li>
|
|
114
|
-
</ul>
|
|
115
|
-
</li>
|
|
116
|
-
</ul>
|
|
117
|
-
<div class="relations">
|
|
118
|
-
<h3>Related Topics</h3>
|
|
119
|
-
<ul>
|
|
120
|
-
<li><a href="../index.html">Documentation overview</a><ul>
|
|
121
|
-
<li>Previous: <a href="ha.html" title="previous chapter">26. Highly Available AMPS Installations</a></li>
|
|
122
|
-
<li>Next: <a href="securing.html" title="next chapter">28. Securing AMPS</a></li>
|
|
123
|
-
</ul></li>
|
|
124
|
-
</ul>
|
|
125
|
-
</div>
|
|
126
|
-
<div id="searchbox" style="display: none" role="search">
|
|
127
|
-
<h3>Quick search</h3>
|
|
128
|
-
<form class="search" action="../search.html" method="get">
|
|
129
|
-
<div><input type="text" name="q" /></div>
|
|
130
|
-
<div><input type="submit" value="Go" /></div>
|
|
131
|
-
<input type="hidden" name="check_keywords" value="yes" />
|
|
132
|
-
<input type="hidden" name="area" value="default" />
|
|
133
|
-
</form>
|
|
134
|
-
</div>
|
|
135
|
-
<script type="text/javascript">$('#searchbox').show(0);</script>
|
|
136
|
-
</div>
|
|
137
|
-
</div>
|
|
138
|
-
<div class="documentwrapper">
|
|
139
|
-
<div class="bodywrapper">
|
|
140
|
-
<div class="body" role="main">
|
|
141
|
-
|
|
142
|
-
<div class="section" id="operation-and-deployment">
|
|
143
|
-
<span id="operation"></span><span id="operation-deployment-capacity-planning"></span><span id="ug-operation"></span><span id="index-0"></span><h1>27. Operation and Deployment<a class="headerlink" href="#operation-and-deployment" title="Permalink to this headline">¶</a></h1>
|
|
144
|
-
<p>This chapter contains guidelines and best practices to help plan
|
|
145
|
-
and prepare an environment, to ensure optimal performance and
|
|
146
|
-
stability for AMPS deployments.</p>
|
|
147
|
-
<p>See the <a class="reference internal" href="troubleshooting.html#ug-troubleshooting"><span class="std std-ref">Troubleshooting</span></a> chapter for
|
|
148
|
-
information on troubleshooting problems with AMPS, including
|
|
149
|
-
information on using the utilities that come with AMPS.</p>
|
|
150
|
-
<div class="section" id="capacity-planning">
|
|
151
|
-
<h2>Capacity Planning<a class="headerlink" href="#capacity-planning" title="Permalink to this headline">¶</a></h2>
|
|
152
|
-
<p id="index-1">Sizing an AMPS deployment can be a complicated process that includes
|
|
153
|
-
many factors, such as: configuration parameters used for AMPS, the data
|
|
154
|
-
used within the deployment and how the deployment will be used. This
|
|
155
|
-
section presents guidelines that you can use in sizing your host
|
|
156
|
-
environment for an AMPS deployment given the following components that
|
|
157
|
-
need to be taken into account: Memory, Storage, CPU and Network.</p>
|
|
158
|
-
<p>Capacity planning is one of the most important aspects of ensuring
|
|
159
|
-
that an AMPS deployment can meet the needs of the application.</p>
|
|
160
|
-
<div class="admonition important">
|
|
161
|
-
<p class="first admonition-title">Important</p>
|
|
162
|
-
<p class="last">The capacity planning formulas in this section are
|
|
163
|
-
intended to help you size a system to run an instance
|
|
164
|
-
of AMPS. The actual resource consumption will vary
|
|
165
|
-
based on usage and configuration.</p>
|
|
166
|
-
</div>
|
|
167
|
-
<div class="section" id="system-goals-and-requirements">
|
|
168
|
-
<h3>System Goals and Requirements<a class="headerlink" href="#system-goals-and-requirements" title="Permalink to this headline">¶</a></h3>
|
|
169
|
-
<p>When planning the capacity for a system, the most important questions
|
|
170
|
-
to understand are: the purpose of the instance and the Service Level Agreement
|
|
171
|
-
(SLA) offered by the instance. For example, is this a server for use by a
|
|
172
|
-
development team for early exploration of ideas, or will this instance be
|
|
173
|
-
core infrastructure for a major application? Is it important that the instance
|
|
174
|
-
has the absolute minimum latency possible, or is the most important aspect
|
|
175
|
-
of the system query response time for a 1TB topic in the SOW?</p>
|
|
176
|
-
<p>Since AMPS efficiently uses the system hardware, the limits of an AMPS
|
|
177
|
-
instance are typically a result of the limitations of the underlying host
|
|
178
|
-
system. Proper capacity planning (and operating system tuning) can mean
|
|
179
|
-
the difference between an instance that performs well and handles increased
|
|
180
|
-
traffic without incident and an instance that constantly pushes the
|
|
181
|
-
hardware to the limit and becomes less responsive when traffic increases.</p>
|
|
182
|
-
<div class="section" id="single-tenant-or-multi-tenant">
|
|
183
|
-
<h4>Single-Tenant or Multi-Tenant<a class="headerlink" href="#single-tenant-or-multi-tenant" title="Permalink to this headline">¶</a></h4>
|
|
184
|
-
<p>AMPS performs well in both single-tenant and multi-tenant installations. When
|
|
185
|
-
choosing whether to host more than one AMPS instance on a given system, it is
|
|
186
|
-
important to plan for the <em>highest</em> level of traffic expected on all
|
|
187
|
-
instances simultaneously. In a business setting, it is common for a sudden
|
|
188
|
-
increase in traffic to affect a number of systems in the business, rather than
|
|
189
|
-
being isolated to just one system. When planning capacity for a multi-tenant
|
|
190
|
-
system, provision a host that exceeds the total maximum capacity required
|
|
191
|
-
for <strong>all</strong> AMPS instances on the system at peak load.</p>
|
|
192
|
-
<p>For multi-tenant installations, disable AMPS-level NUMA tuning in the
|
|
193
|
-
configuration file.</p>
|
|
194
|
-
</div>
|
|
195
|
-
<div class="section" id="physical-server-or-virtual-machines">
|
|
196
|
-
<h4>Physical Server or Virtual Machines<a class="headerlink" href="#physical-server-or-virtual-machines" title="Permalink to this headline">¶</a></h4>
|
|
197
|
-
<p>Although AMPS is designed to be highly adaptive to hardware on which
|
|
198
|
-
it runs, AMPS does not require a dedicated physical server.
|
|
199
|
-
AMPS can be successfully deployed on either physical hardware or virtual
|
|
200
|
-
machines. In either deployment model, 60East recommends tuning Linux for
|
|
201
|
-
best performance rather than accepting the distribution defaults (which
|
|
202
|
-
are typically tuned for interactive use rather than for a high performance
|
|
203
|
-
server).</p>
|
|
204
|
-
<p>Typically, installations that require the highest level of performance
|
|
205
|
-
and lowest levels of latency deploy on physical hardware (with a single
|
|
206
|
-
AMPS instance per server). Installations that are willing to trade
|
|
207
|
-
predictable performance for ease and flexibility of deployment often use
|
|
208
|
-
virtual machines.</p>
|
|
209
|
-
<p>When deployed on a virtual machine, disable AMPS-level NUMA tuning in the
|
|
210
|
-
configuration file.</p>
|
|
211
|
-
<p>60East does not recommend over-committing the underlying hardware.
|
|
212
|
-
When deploying on a virtual machine, it is important to consider the
|
|
213
|
-
capacity of <em>both</em> the virtual machine itself and the underlying host hardware.
|
|
214
|
-
In other words, the total memory needed by all virtual machines – with all
|
|
215
|
-
applications hosted by those machines running at peak traffic simultaneously –
|
|
216
|
-
should not exceed the physical memory of the hardware. Likewise, the total
|
|
217
|
-
number of CPUs specified in all of the virtual machines on the host should not
|
|
218
|
-
exceed the number of CPUs on the host hardware, the network bandwidth needed
|
|
219
|
-
should not exceed the bandwidth allocated to the host, the traffic to the
|
|
220
|
-
storage device should not exceed the throughput that the storage device is
|
|
221
|
-
capable of, and so on. In an enterprise environment, it is not unusual
|
|
222
|
-
for a wide variety of applications to all see peak loads at the same time,
|
|
223
|
-
so the system should be provisioned to provide enough capacity that
|
|
224
|
-
every hosted application can meet peak throughput requirements at the
|
|
225
|
-
same time.</p>
|
|
226
|
-
<p>Develop a plan for monitoring the physical hardware
|
|
227
|
-
as well as the virtualized host environment. If possible, the
|
|
228
|
-
monitoring plan should include a method for correlating the activity
|
|
229
|
-
on the virtual machine to the activity on the physical host (for example,
|
|
230
|
-
it would be important to be able to correlate CPU saturation on the
|
|
231
|
-
virtual machine to CPU saturation on the physical host).</p>
|
|
232
|
-
<p>60East does not recommend using virtualization systems that dynamically move
|
|
233
|
-
running virtual machines for load-balancing purposes in an application that
|
|
234
|
-
requires low latency or predictable response times. Although these systems
|
|
235
|
-
work well for their intended purpose, a machine migration typically takes an
|
|
236
|
-
extended period of time (for example, a target maximum time of 1s) to finalize
|
|
237
|
-
the migration. During that time, the virtual machine (and therefore, AMPS) is
|
|
238
|
-
temporarily paused. A pause this long is typically orders of magnitude longer
|
|
239
|
-
than the typical low-latency system can tolerate for service interruption,
|
|
240
|
-
and is effectively a temporary service outage during the migration.</p>
|
|
241
|
-
<p>Although this sort of migration is typically unworkable for load-balancing,
|
|
242
|
-
the migration is much less downtime than would be required to stop and
|
|
243
|
-
restart AMPS. These systems could be a good choice for reducing downtime
|
|
244
|
-
for hardware-level or network-level maintenance.</p>
|
|
245
|
-
</div>
|
|
246
|
-
</div>
|
|
247
|
-
<div class="section" id="memory">
|
|
248
|
-
<h3>Memory<a class="headerlink" href="#memory" title="Permalink to this headline">¶</a></h3>
|
|
249
|
-
<p id="index-2">AMPS is designed for high performance. It is designed to use memory,
|
|
250
|
-
as needed, to improve performance and reduce latency. One of the most
|
|
251
|
-
important aspects of managing an AMPS instance is, being sure that the
|
|
252
|
-
instance has enough physical memory available to perform well.</p>
|
|
253
|
-
<p>This section contains general guidelines for creating an approximate
|
|
254
|
-
sizing estimate for the AMPS process itself. An estimate on total
|
|
255
|
-
memory capacity for a server would include the estimate for the
|
|
256
|
-
AMPS process itself and estimates for any other processes running on
|
|
257
|
-
the system (including monitoring software, security software, other
|
|
258
|
-
applications, update and maintenance tasks, and so on). Notice that
|
|
259
|
-
it is possible for AMPS to maintain quantities of data much larger
|
|
260
|
-
than physical memory (for example, terabytes of SOW data). For
|
|
261
|
-
instances that have this requirement, contact 60East support for
|
|
262
|
-
tuning and sizing guidance.</p>
|
|
263
|
-
<div class="section" id="estimating-amps-instance-memory-usage">
|
|
264
|
-
<h4>Estimating AMPS Instance Memory Usage<a class="headerlink" href="#estimating-amps-instance-memory-usage" title="Permalink to this headline">¶</a></h4>
|
|
265
|
-
<p>The best way to estimate the memory usage for an AMPS instance is
|
|
266
|
-
to simulate, as closely as possible, the traffic and usage pattern
|
|
267
|
-
for the instance and collect statistics that show the amount of
|
|
268
|
-
memory that the instance uses.</p>
|
|
269
|
-
<p>If actual numbers aren’t available, you can use the formulas in this
|
|
270
|
-
section to come up with a working approximation of the amount of
|
|
271
|
-
memory to make available to AMPS for a given amount of data, number
|
|
272
|
-
of clients, and so on. The AMPS server will use memory as necessary for
|
|
273
|
-
performance, so the formulas here offer general estimates for system sizing
|
|
274
|
-
purposes rather than precise predictions.</p>
|
|
275
|
-
<p>AMPS needs less than 1GB for its own binary image and initial start up
|
|
276
|
-
state for most configurations. For production instances, we estimate
|
|
277
|
-
5GB as a typical working memory footprint for an active installation.</p>
|
|
278
|
-
<p>As a general estimate, because of indexing for queries, AMPS may need
|
|
279
|
-
up to twice the size of messages stored in a topic in the SOW to fully
|
|
280
|
-
index that topic (the same sizing applies to messages in views and
|
|
281
|
-
conflated topics). AMPS maintains a copy of the latest journal file
|
|
282
|
-
in memory for quick access, and maintains a small amount of metadata for
|
|
283
|
-
each message in an AMPS queue. The <code class="docutils literal"><span class="pre">MessageMemoryLimit</span></code> configured for the
|
|
284
|
-
instance (or the total of all <code class="docutils literal"><span class="pre">MessageMemoryLimit</span></code> settings for each <code class="docutils literal"><span class="pre">Transport</span></code>
|
|
285
|
-
in the instance) specifies the total amount of memory devoted to buffering
|
|
286
|
-
messages for clients, including conflated subscriptions, aggregated
|
|
287
|
-
subscriptions, and paginated subscriptions.</p>
|
|
288
|
-
<p>This puts a general estimate of the amount of memory to be available for
|
|
289
|
-
the AMPS server itself at:</p>
|
|
290
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span>5GB + ``SowSizeEstimate``
|
|
291
|
-
+ ( C * 4096 bytes)
|
|
292
|
-
+ ( TMemLimit ) + (J * 2) + (Q * 250 bytes) [ + (QA * 20 bytes) ]
|
|
293
|
-
</pre></div>
|
|
294
|
-
</div>
|
|
295
|
-
<p><em>Memory capacity estimate equation</em></p>
|
|
296
|
-
<p>where:</p>
|
|
297
|
-
<blockquote>
|
|
298
|
-
<div><div class="line-block">
|
|
299
|
-
<div class="line"><code class="docutils literal"><span class="pre">SowSizeEstimate</span> <span class="pre">=</span> <span class="pre">Estimates</span> <span class="pre">for</span> <span class="pre">SOW</span> <span class="pre">topic</span> <span class="pre">size,</span> <span class="pre">as</span> <span class="pre">described</span> <span class="pre">below</span> <span class="pre">(in</span> <span class="pre">bytes)</span></code></div>
|
|
300
|
-
<div class="line"><code class="docutils literal"><span class="pre">C</span> <span class="pre">=</span> <span class="pre">Number</span> <span class="pre">of</span> <span class="pre">Clients</span></code></div>
|
|
301
|
-
<div class="line"><code class="docutils literal"><span class="pre">TMemLimit</span> <span class="pre">=</span> <span class="pre">Total</span> <span class="pre">of</span> <span class="pre">all</span> <span class="pre">MessageMemoryLimit</span> <span class="pre">settings</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">instance</span></code></div>
|
|
302
|
-
<div class="line"><code class="docutils literal"><span class="pre">J</span> <span class="pre">=</span> <span class="pre">JournalSize</span> <span class="pre">setting</span></code></div>
|
|
303
|
-
<div class="line"><code class="docutils literal"><span class="pre">Q</span> <span class="pre">=</span> <span class="pre">Total</span> <span class="pre">number</span> <span class="pre">of</span> <span class="pre">active</span> <span class="pre">unacknowledged</span> <span class="pre">messages</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">queues</span> <span class="pre">for</span> <span class="pre">the</span> <span class="pre">instance</span></code></div>
|
|
304
|
-
<div class="line"><code class="docutils literal"><span class="pre">QA</span> <span class="pre">=</span> <span class="pre">Total</span> <span class="pre">number</span> <span class="pre">of</span> <span class="pre">acknowledgments</span> <span class="pre">received</span> <span class="pre">for</span> <span class="pre">messages</span> <span class="pre">that</span> <span class="pre">are</span> <span class="pre">not</span> <span class="pre">yet</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">queue</span></code></div>
|
|
305
|
-
</div>
|
|
306
|
-
</div></blockquote>
|
|
307
|
-
<p>By default, all unacknowledged messages in the instance will be active in the queue.
|
|
308
|
-
When a queue specifies a <code class="docutils literal"><span class="pre">TargetQueueDepth</span></code>, the total number of active unacknowledged messages for
|
|
309
|
-
the queue will, in most cases, be limited to the <code class="docutils literal"><span class="pre">TargetQueueDepth</span></code>.</p>
|
|
310
|
-
<p>When acknowledgment messages are received for messages that are not currently active in the queue, AMPS
|
|
311
|
-
must track those acknowledgments to be able to efficiently prevent those messages from entering the queue.
|
|
312
|
-
Not every application consumption pattern can produce this situation; however, if it arises, this calculation
|
|
313
|
-
can help estimate the amount of memory required to maintain information about these acknowledgments until
|
|
314
|
-
the message enters the queue.</p>
|
|
315
|
-
<p>To calculate the <code class="docutils literal"><span class="pre">SowSizeEstimate</span></code>, the memory footprint required for topics, views and conflated topics in
|
|
316
|
-
the SOW, use the following formula to calculate for each (<code class="docutils literal"><span class="pre">Topic</span></code>, <code class="docutils literal"><span class="pre">View</span></code> and <code class="docutils literal"><span class="pre">ConflatedTopic</span></code>):</p>
|
|
317
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="p">(</span> <span class="mi">2</span> <span class="o">*</span> <span class="p">(</span><span class="n">S</span> <span class="o">+</span> <span class="mi">128</span> <span class="nb">bytes</span><span class="p">)</span> <span class="o">*</span> <span class="n">M</span> <span class="p">)</span> <span class="o">+</span> <span class="p">((</span><span class="mi">16</span> <span class="nb">bytes</span> <span class="o">*</span> <span class="n">M</span><span class="p">)</span> <span class="o">*</span> <span class="n">H</span><span class="p">)</span>
|
|
318
|
-
</pre></div>
|
|
319
|
-
</div>
|
|
320
|
-
<p><em>Sow Topic memory capacity estimate equation</em></p>
|
|
321
|
-
<p>where:</p>
|
|
322
|
-
<blockquote>
|
|
323
|
-
<div><div class="line-block">
|
|
324
|
-
<div class="line"><code class="docutils literal"><span class="pre">S</span> <span class="pre">=</span> <span class="pre">Average</span> <span class="pre">message</span> <span class="pre">size</span> <span class="pre">for</span> <span class="pre">the</span> <span class="pre">Topic,</span> <span class="pre">View</span> <span class="pre">or</span> <span class="pre">ConflatedTopic</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">SOW</span> <span class="pre">(in</span> <span class="pre">bytes)</span></code></div>
|
|
325
|
-
<div class="line"><code class="docutils literal"><span class="pre">M</span> <span class="pre">=</span> <span class="pre">Maximum</span> <span class="pre">expected</span> <span class="pre">number</span> <span class="pre">of</span> <span class="pre">messages</span> <span class="pre">for</span> <span class="pre">the</span> <span class="pre">Topic,</span> <span class="pre">View</span> <span class="pre">or</span> <span class="pre">ConflatedTopic</span></code></div>
|
|
326
|
-
<div class="line"><code class="docutils literal"><span class="pre">H</span> <span class="pre">=</span> <span class="pre">Number</span> <span class="pre">of</span> <span class="pre">hash</span> <span class="pre">indexes</span> <span class="pre">for</span> <span class="pre">the</span> <span class="pre">Topic,</span> <span class="pre">View</span> <span class="pre">or</span> <span class="pre">ConflatedTopic</span></code></div>
|
|
327
|
-
</div>
|
|
328
|
-
</div></blockquote>
|
|
329
|
-
<p>Estimating topic-by-topic generally gives a more precise estimate. However,
|
|
330
|
-
if that data is not available, you can also use overall message sizes and
|
|
331
|
-
message count for the instance.</p>
|
|
332
|
-
<p>If more configuration detail is available, it may be possible to create a more
|
|
333
|
-
precise estimate. For example, if the <code class="docutils literal"><span class="pre">SlabSize</span></code> configured for a SOW topic
|
|
334
|
-
is not an exact fit for the message size + header, it is possible to estimate
|
|
335
|
-
the amount of free space remaining in each slab.</p>
|
|
336
|
-
<p>As a simple example, a general estimate of the amount of memory that should be left
|
|
337
|
-
available to run an instance of AMPS might be:</p>
|
|
338
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="mi">5</span><span class="n">GB</span> <span class="o">+</span> <span class="p">[</span> <span class="p">(</span> <span class="mi">2</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1024</span><span class="o">+</span><span class="mi">128</span><span class="p">)</span> <span class="o">*</span> <span class="mi">1</span><span class="p">,</span><span class="mi">000</span><span class="p">,</span><span class="mi">000</span> <span class="p">)</span> <span class="o">+</span> <span class="p">(</span><span class="mi">16</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">000</span><span class="p">,</span><span class="mi">000</span> <span class="o">*</span> <span class="mi">2</span><span class="p">)</span> <span class="p">)</span> <span class="o">+</span>
|
|
339
|
-
<span class="p">(</span> <span class="mi">2</span> <span class="o">*</span> <span class="p">(</span> <span class="mi">512</span><span class="o">+</span><span class="mi">128</span><span class="p">)</span> <span class="o">*</span> <span class="mi">1</span><span class="p">,</span><span class="mi">000</span><span class="p">,</span><span class="mi">000</span> <span class="p">)</span> <span class="o">+</span> <span class="p">(</span> <span class="mi">0</span> <span class="p">)</span> <span class="o">+</span>
|
|
340
|
-
<span class="p">(</span> <span class="mi">2</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1024</span><span class="o">+</span><span class="mi">128</span><span class="p">)</span> <span class="o">*</span> <span class="mi">8</span><span class="p">,</span><span class="mi">000</span><span class="p">,</span><span class="mi">000</span> <span class="p">)</span> <span class="o">+</span> <span class="p">(</span><span class="mi">16</span> <span class="o">*</span> <span class="p">(</span><span class="mi">8</span><span class="p">,</span><span class="mi">000</span><span class="p">,</span><span class="mi">000</span> <span class="o">*</span> <span class="mi">4</span><span class="p">)</span> <span class="p">]</span>
|
|
341
|
-
<span class="o">+</span> <span class="p">(</span> <span class="mi">200</span> <span class="o">*</span> <span class="mi">4096</span><span class="p">)</span> <span class="o">+</span> <span class="p">(</span> <span class="mi">10</span><span class="p">,</span><span class="mi">000</span><span class="p">,</span><span class="mi">000</span><span class="p">,</span><span class="mi">000</span><span class="p">)</span> <span class="o">+</span>
|
|
342
|
-
<span class="p">(</span> <span class="mi">1</span><span class="p">,</span><span class="mi">000</span><span class="p">,</span><span class="mi">000</span><span class="p">,</span><span class="mi">000</span> <span class="o">*</span> <span class="mi">2</span> <span class="p">)</span> <span class="o">+</span> <span class="p">(</span> <span class="mi">750</span><span class="p">,</span><span class="mi">000</span> <span class="o">*</span> <span class="mi">250</span><span class="p">)</span>
|
|
343
|
-
</pre></div>
|
|
344
|
-
</div>
|
|
345
|
-
<p><em>Example memory estimation equation</em></p>
|
|
346
|
-
<p>where:</p>
|
|
347
|
-
<blockquote>
|
|
348
|
-
<div><div class="line-block">
|
|
349
|
-
<div class="line">For the <code class="docutils literal"><span class="pre">SowSizeEstimate</span></code>, the instance will have two</div>
|
|
350
|
-
<div class="line">Topics and a View.</div>
|
|
351
|
-
<div class="line"><br /></div>
|
|
352
|
-
<div class="line">For the first topic:</div>
|
|
353
|
-
<div class="line"><code class="docutils literal"><span class="pre">S</span> <span class="pre">=</span> <span class="pre">1024</span></code></div>
|
|
354
|
-
<div class="line"><code class="docutils literal"><span class="pre">M</span> <span class="pre">=</span> <span class="pre">4,750,000</span></code></div>
|
|
355
|
-
<div class="line"><code class="docutils literal"><span class="pre">H</span> <span class="pre">=</span> <span class="pre">2</span></code></div>
|
|
356
|
-
<div class="line"><br /></div>
|
|
357
|
-
<div class="line">For a view over the first topic (the view uses no HashIndexes):</div>
|
|
358
|
-
<div class="line"><code class="docutils literal"><span class="pre">S</span> <span class="pre">=</span> <span class="pre">512</span></code></div>
|
|
359
|
-
<div class="line"><code class="docutils literal"><span class="pre">M</span> <span class="pre">=</span> <span class="pre">3,000,000</span></code></div>
|
|
360
|
-
<div class="line"><code class="docutils literal"><span class="pre">H</span> <span class="pre">=</span> <span class="pre">0</span></code></div>
|
|
361
|
-
<div class="line"><br /></div>
|
|
362
|
-
<div class="line">For the second topic:</div>
|
|
363
|
-
<div class="line"><code class="docutils literal"><span class="pre">S</span> <span class="pre">=</span> <span class="pre">1024</span></code></div>
|
|
364
|
-
<div class="line"><code class="docutils literal"><span class="pre">M</span> <span class="pre">=</span> <span class="pre">8,000,000</span></code></div>
|
|
365
|
-
<div class="line"><code class="docutils literal"><span class="pre">H</span> <span class="pre">=</span> <span class="pre">4</span></code></div>
|
|
366
|
-
<div class="line"><br /></div>
|
|
367
|
-
<div class="line">For the overall AMPS estimate:</div>
|
|
368
|
-
<div class="line"><code class="docutils literal"><span class="pre">C</span> <span class="pre">=</span> <span class="pre">200</span></code></div>
|
|
369
|
-
<div class="line"><code class="docutils literal"><span class="pre">TMemLimit</span> <span class="pre">=</span> <span class="pre">10,000,000,000</span> <span class="pre">(10GB)</span></code></div>
|
|
370
|
-
<div class="line"><code class="docutils literal"><span class="pre">J</span> <span class="pre">=</span> <span class="pre">1,000,000,000</span> <span class="pre">(1GB)</span></code></div>
|
|
371
|
-
<div class="line"><code class="docutils literal"><span class="pre">Q</span> <span class="pre">=</span> <span class="pre">750,000</span></code></div>
|
|
372
|
-
</div>
|
|
373
|
-
</div></blockquote>
|
|
374
|
-
<p>This shows sizing for an AMPS deployment with the following characteristics:</p>
|
|
375
|
-
<ul class="simple">
|
|
376
|
-
<li>Three topics in the SOW (including one view):<ul>
|
|
377
|
-
<li>One topic has a message size of 1024 bytes, will hold 5 million messages
|
|
378
|
-
and configure 2 hash indexes.</li>
|
|
379
|
-
<li>One view has a message size of 512 bytes, will hold 3 million messages
|
|
380
|
-
and does not configure a hash index.</li>
|
|
381
|
-
<li>One topic has a message size of 1024 bytes, will hold 8 million messages
|
|
382
|
-
and will configure 4 hash indexes.</li>
|
|
383
|
-
</ul>
|
|
384
|
-
</li>
|
|
385
|
-
<li>A maximum of 10GB of memory for in-flight messages and working state (for aggregated subscriptions,
|
|
386
|
-
pagination sets and so on)</li>
|
|
387
|
-
<li>A journal size setting configured to 1GB</li>
|
|
388
|
-
<li>A maximum of 750,000 total unacknowledged messages at a time across all message queues</li>
|
|
389
|
-
<li>No more than 200 clients connected simultaneously</li>
|
|
390
|
-
<li>No external modules loaded</li>
|
|
391
|
-
</ul>
|
|
392
|
-
<p>This estimate suggests that <em>no less than</em> 52GB of physical memory on the server
|
|
393
|
-
should be available for the AMPS instance itself while AMPS is processing the
|
|
394
|
-
expected volume of messages. When AMPS first starts, or if traffic is light,
|
|
395
|
-
AMPS may consume less than the estimated amount. AMPS may also consume more than
|
|
396
|
-
this amount of memory during memory-intensive operations in some cases.</p>
|
|
397
|
-
<div class="admonition important">
|
|
398
|
-
<p class="first admonition-title">Important</p>
|
|
399
|
-
<p class="last">The formula in this section is a general estimate designed to produce
|
|
400
|
-
a recommended minimum amount of physical memory to have available for AMPS.
|
|
401
|
-
It is intended as a guideline when actual measurements are not available.
|
|
402
|
-
For more accurate estimates, use measurements of the expected workload.
|
|
403
|
-
A given instance of AMPS may not match these estimates at any particular
|
|
404
|
-
time, based on usage, precise configuration, traffic, client activity,
|
|
405
|
-
and so forth.</p>
|
|
406
|
-
</div>
|
|
407
|
-
</div>
|
|
408
|
-
<div class="section" id="estimating-overall-system-capacity">
|
|
409
|
-
<h4>Estimating Overall System Capacity<a class="headerlink" href="#estimating-overall-system-capacity" title="Permalink to this headline">¶</a></h4>
|
|
410
|
-
<p>The AMPS instance memory usage is one component of estimating the needs of
|
|
411
|
-
the overall system. In addition to this, there is also: operating system
|
|
412
|
-
tasks, management and maintenance (including monitoring, security and
|
|
413
|
-
management software), and any other applications running on the system
|
|
414
|
-
must also be taken into consideration.</p>
|
|
415
|
-
<p>Further, Linux memory management is most efficient when the operating
|
|
416
|
-
system has 10-20% headroom.</p>
|
|
417
|
-
<p>For best performance and a lower risk of problems related to an unexpected
|
|
418
|
-
spike in message volume, 60East recommends factoring in all of the components
|
|
419
|
-
that will consume memory on the system, and then sizing the overall physical
|
|
420
|
-
memory to handle 200% of the capacity estimated while still retaining 10-20%
|
|
421
|
-
physical RAM. Note that these are rough guidelines. An especially critical
|
|
422
|
-
system, or a system that has in the past seen larger volumes might size memory
|
|
423
|
-
to 350% or more, while a less critical system might allocate less than 200% of
|
|
424
|
-
the estimated capacity. A VM on a developer desktop might be sized at
|
|
425
|
-
or below the capacity estimate, since the system is completely
|
|
426
|
-
under the control of a single user and is not intended to handle production
|
|
427
|
-
loads.</p>
|
|
428
|
-
<p>For example, in the estimate above, the system should reserve a minimum of
|
|
429
|
-
52GB of free RAM for the AMPS process itself. Suppose that the monitoring,
|
|
430
|
-
access control and server management software are very lightweight and only
|
|
431
|
-
consume 3GB of memory under production load. The following estimates would be reasonable:</p>
|
|
432
|
-
<ul>
|
|
433
|
-
<li><p class="first"><strong>Production server with strict SLA and tolerance for usage variation</strong> - <em>128GB</em></p>
|
|
434
|
-
<p>This estimate accounts for 200% of the estimated required capacity while still allowing
|
|
435
|
-
16GB (between 10 and 20% of the physical memory) free for efficient
|
|
436
|
-
memory management. (Calculation: 52GB for AMPS, 3GB for the monitoring
|
|
437
|
-
software = 55GB. Multiply by 2 = 110GB.) For a server that needs to be available
|
|
438
|
-
during periods of heavy activity, this sizing could be a good option.</p>
|
|
439
|
-
</li>
|
|
440
|
-
<li><p class="first"><strong>Production server with stable usage or variable SLA</strong> - <em>96GB</em></p>
|
|
441
|
-
<p>This estimate covers the expected capacity of the AMPS server and monitoring software
|
|
442
|
-
and leaves enough headroom for the operating system, but does not allow for
|
|
443
|
-
large growth in volume or changes in usage patterns. For a server with predictable
|
|
444
|
-
usage and volumes, or a server where some performance impact is acceptable if volume
|
|
445
|
-
or usage increases and where the general estimates for AMPS capacity are known to be
|
|
446
|
-
very precise, this server size could be a good option.</p>
|
|
447
|
-
</li>
|
|
448
|
-
<li><p class="first"><strong>Shared development server with minimal performance SLA</strong> - <em>64GB</em></p>
|
|
449
|
-
<p>This minimal estimate covers the expected capacity of the AMPS server and monitoring system,
|
|
450
|
-
but does not leave enough excess capacity for the server to absorb unexpected
|
|
451
|
-
traffic. This server would be expected to have periodic performance
|
|
452
|
-
degradation and to possibly exit due to out of memory conditions
|
|
453
|
-
if the volume of traffic increases or the usage pattern changes.
|
|
454
|
-
This could be a good sizing for an instance that is used only for
|
|
455
|
-
development, where the instance is not guaranteed to provide any particular
|
|
456
|
-
performance guarantees and it is acceptable for the server to be temporarily
|
|
457
|
-
unavailable if there was an unexpected increase in load.</p>
|
|
458
|
-
</li>
|
|
459
|
-
</ul>
|
|
460
|
-
</div>
|
|
461
|
-
</div>
|
|
462
|
-
<div class="section" id="storage">
|
|
463
|
-
<h3>Storage<a class="headerlink" href="#storage" title="Permalink to this headline">¶</a></h3>
|
|
464
|
-
<p id="index-3">AMPS needs enough space to store its own binary images, configuration files, SOW persistence
|
|
465
|
-
files, log files, transaction log journals, and slow client offline storage, if any. Not
|
|
466
|
-
every deployment configures a SOW or transaction log, so the storage
|
|
467
|
-
requirements are largely driven by the configuration.</p>
|
|
468
|
-
<div class="section" id="amps-log-files">
|
|
469
|
-
<h4>AMPS Log Files<a class="headerlink" href="#amps-log-files" title="Permalink to this headline">¶</a></h4>
|
|
470
|
-
<p>Log file sizes vary depending on the log level and how the engine is
|
|
471
|
-
used. For example, in the worst-case, <code class="docutils literal"><span class="pre">trace</span></code> level logging. AMPS will need
|
|
472
|
-
at least enough storage for every message published into AMPS and every
|
|
473
|
-
message sent out of AMPS plus 20%.</p>
|
|
474
|
-
<p>For <code class="docutils literal"><span class="pre">info</span></code> level logging, a good estimate of AMPS log file sizes would
|
|
475
|
-
be 2MB per 10 million messages published.</p>
|
|
476
|
-
<p>Logging space overhead can be capped by implementing a log rotation
|
|
477
|
-
strategy which uses the same file name for each rotation. This strategy
|
|
478
|
-
effectively truncates the file when it reaches the log rotation
|
|
479
|
-
threshold to prevent it from growing larger.</p>
|
|
480
|
-
</div>
|
|
481
|
-
<div class="section" id="sow-topics">
|
|
482
|
-
<h4>SOW Topics<a class="headerlink" href="#sow-topics" title="Permalink to this headline">¶</a></h4>
|
|
483
|
-
<p id="index-4">When calculating the amount of storage to reserve for topics in the
|
|
484
|
-
SOW, there are a couple of factors to keep in mind.
|
|
485
|
-
The first is the average size of messages stored in the SOW,
|
|
486
|
-
the number of messages stored in the SOW and the <code class="docutils literal"><span class="pre">SlabSize</span></code> defined in
|
|
487
|
-
the configuration file for each <code class="docutils literal"><span class="pre">Topic</span></code>. Using these values, it is possible
|
|
488
|
-
to estimate the minimum and maximum storage requirements for the SOW.</p>
|
|
489
|
-
<p>A rough estimate of the minimum size for a SOW topic is as follows:</p>
|
|
490
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="n">Min</span> <span class="o">=</span> <span class="p">(</span> <span class="n">MsgSize</span> <span class="o">*</span> <span class="n">MsgCount</span> <span class="p">)</span> <span class="o">+</span> <span class="p">(</span> <span class="n">Cores</span> <span class="o">*</span> <span class="n">SlabSize</span> <span class="p">)</span>
|
|
491
|
-
</pre></div>
|
|
492
|
-
</div>
|
|
493
|
-
<p><em>Minimum SOW Size</em></p>
|
|
494
|
-
<p>where:</p>
|
|
495
|
-
<blockquote>
|
|
496
|
-
<div><div class="line-block">
|
|
497
|
-
<div class="line"><code class="docutils literal"><span class="pre">Min</span> <span class="pre">=</span> <span class="pre">Minimum</span> <span class="pre">SOW</span> <span class="pre">size</span></code></div>
|
|
498
|
-
<div class="line"><code class="docutils literal"><span class="pre">MsgSize</span> <span class="pre">=</span> <span class="pre">Average</span> <span class="pre">SOW</span> <span class="pre">message</span> <span class="pre">size</span></code></div>
|
|
499
|
-
<div class="line"><code class="docutils literal"><span class="pre">MsgCount</span> <span class="pre">=</span> <span class="pre">Number</span> <span class="pre">of</span> <span class="pre">SOW</span> <span class="pre">messages</span></code></div>
|
|
500
|
-
<div class="line"><code class="docutils literal"><span class="pre">Cores</span> <span class="pre">=</span> <span class="pre">Number</span> <span class="pre">of</span> <span class="pre">processor</span> <span class="pre">cores</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">system</span></code></div>
|
|
501
|
-
<div class="line"><code class="docutils literal"><span class="pre">SlabSize</span> <span class="pre">=</span> <span class="pre">Slab</span> <span class="pre">Size</span> <span class="pre">for</span> <span class="pre">the</span> <span class="pre">SOW</span></code></div>
|
|
502
|
-
</div>
|
|
503
|
-
</div></blockquote>
|
|
504
|
-
<p>A rough estimate of the maximum size for a SOW topic is as follows:</p>
|
|
505
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="n">Max</span> <span class="o">=</span> <span class="p">(</span> <span class="p">(</span> <span class="n">MsgCount</span> <span class="o">/</span> <span class="p">(</span> <span class="p">(</span> <span class="n">SlabSize</span> <span class="o">/</span> <span class="n">MsgSize</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span><span class="p">)</span> <span class="p">)</span> <span class="o">*</span> <span class="n">SlabSize</span><span class="p">)</span> <span class="o">+</span> <span class="p">(</span><span class="n">Cores</span> <span class="o">*</span> <span class="n">SlabSize</span><span class="p">)</span>
|
|
506
|
-
</pre></div>
|
|
507
|
-
</div>
|
|
508
|
-
<p><em>Maximum SOW Size</em></p>
|
|
509
|
-
<p>where:</p>
|
|
510
|
-
<blockquote>
|
|
511
|
-
<div><div class="line-block">
|
|
512
|
-
<div class="line"><code class="docutils literal"><span class="pre">Max</span> <span class="pre">=</span> <span class="pre">Maximum</span> <span class="pre">SOW</span> <span class="pre">size</span></code></div>
|
|
513
|
-
<div class="line"><code class="docutils literal"><span class="pre">MsgCount</span> <span class="pre">=</span> <span class="pre">Number</span> <span class="pre">of</span> <span class="pre">SOW</span> <span class="pre">messages</span></code></div>
|
|
514
|
-
<div class="line"><code class="docutils literal"><span class="pre">SlabSize</span> <span class="pre">=</span> <span class="pre">Slab</span> <span class="pre">size</span> <span class="pre">for</span> <span class="pre">the</span> <span class="pre">SOW</span></code></div>
|
|
515
|
-
<div class="line"><code class="docutils literal"><span class="pre">MsgSize</span> <span class="pre">=</span> <span class="pre">Average</span> <span class="pre">SOW</span> <span class="pre">message</span> <span class="pre">size</span></code></div>
|
|
516
|
-
<div class="line"><code class="docutils literal"><span class="pre">Cores</span> <span class="pre">=</span> <span class="pre">Number</span> <span class="pre">of</span> <span class="pre">CPU</span> <span class="pre">cores</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">system</span></code></div>
|
|
517
|
-
</div>
|
|
518
|
-
</div></blockquote>
|
|
519
|
-
<p>The storage requirements should be between the two values above, however
|
|
520
|
-
it is still possible for the SOW to consume additional storage based on
|
|
521
|
-
the unused capacity configured for each SOW topic.</p>
|
|
522
|
-
<p>Notice that, as suggested in this calculation, AMPS reserves the configured
|
|
523
|
-
<code class="docutils literal"><span class="pre">SlabSize</span></code> for each processor core in the system the first time a thread
|
|
524
|
-
running on that core writes to the SOW.</p>
|
|
525
|
-
<p>For example, in an AMPS configuration file with the <code class="docutils literal"><span class="pre">SlabSize</span></code> set to
|
|
526
|
-
1MB, the SOW for this topic will consume 1MB per processor core with no
|
|
527
|
-
messages stored in the SOW. Pre-allocating SOW capacity in chunks, as a
|
|
528
|
-
chunk is needed, is more efficient for the operating system and storage
|
|
529
|
-
devices, and helps amortize the SOW extension costs over more messages.</p>
|
|
530
|
-
<p>It is also important to be aware of the maximum message size that AMPS
|
|
531
|
-
guarantees the SOW can hold. The maximum message size is calculated in
|
|
532
|
-
the following manner:</p>
|
|
533
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="n">Max</span> <span class="o">=</span> <span class="n">SlabSize</span> <span class="o">-</span> <span class="mi">64</span> <span class="nb">bytes</span>
|
|
534
|
-
</pre></div>
|
|
535
|
-
</div>
|
|
536
|
-
<p><em>Maximum Message Size allowed in SOW</em></p>
|
|
537
|
-
<p>where:</p>
|
|
538
|
-
<blockquote>
|
|
539
|
-
<div><div class="line-block">
|
|
540
|
-
<div class="line"><code class="docutils literal"><span class="pre">Max</span> <span class="pre">=</span> <span class="pre">Maximum</span> <span class="pre">message</span> <span class="pre">size</span> <span class="pre">that</span> <span class="pre">can</span> <span class="pre">be</span> <span class="pre">stored</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">SOW</span></code></div>
|
|
541
|
-
<div class="line"><code class="docutils literal"><span class="pre">SlabSize</span> <span class="pre">=</span> <span class="pre">The</span> <span class="pre">configured</span> <span class="pre">SlabSize</span> <span class="pre">for</span> <span class="pre">the</span> <span class="pre">SOW</span></code></div>
|
|
542
|
-
</div>
|
|
543
|
-
</div></blockquote>
|
|
544
|
-
<p>This calculation says that the maximum message size that can be stored
|
|
545
|
-
in the SOW in a single message is the <code class="docutils literal"><span class="pre">SlabSize</span></code> minus 64
|
|
546
|
-
bytes for the record header information.</p>
|
|
547
|
-
</div>
|
|
548
|
-
<div class="section" id="transaction-logs">
|
|
549
|
-
<h4>Transaction Logs<a class="headerlink" href="#transaction-logs" title="Permalink to this headline">¶</a></h4>
|
|
550
|
-
<p>Transaction logs are used for message replay, replication and to ensure
|
|
551
|
-
consistency in environments where each message is critical. Transaction
|
|
552
|
-
logs are optional in AMPS (though some features require them), and transaction
|
|
553
|
-
logs can be configured to record specific topics.</p>
|
|
554
|
-
<p>When planning for transaction logs, there are three main considerations:</p>
|
|
555
|
-
<ol class="arabic simple">
|
|
556
|
-
<li>The total size needed for the transaction log, including in
|
|
557
|
-
disaster recovery scenarios</li>
|
|
558
|
-
<li>The size to allow for each file that makes up the transaction log</li>
|
|
559
|
-
<li>How many files to preallocate</li>
|
|
560
|
-
</ol>
|
|
561
|
-
<p>You can calculate the approximate total size of the transaction log
|
|
562
|
-
once the system reaches steady state as follows:</p>
|
|
563
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="n">Capacity</span> <span class="o">=</span> <span class="p">(</span> <span class="n">S</span> <span class="o">+</span> <span class="mi">512</span> <span class="nb">bytes</span> <span class="p">)</span> <span class="o">*</span> <span class="n">N</span> <span class="o">+</span> <span class="p">(</span> <span class="n">J</span> <span class="p">)</span> <span class="o">+</span> <span class="p">(</span> <span class="n">TI</span> <span class="p">)</span>
|
|
564
|
-
</pre></div>
|
|
565
|
-
</div>
|
|
566
|
-
<p><em>Transaction Log Sizing Approximation</em></p>
|
|
567
|
-
<p>where:</p>
|
|
568
|
-
<blockquote>
|
|
569
|
-
<div><div class="line-block">
|
|
570
|
-
<div class="line"><code class="docutils literal"><span class="pre">Capacity</span> <span class="pre">=</span> <span class="pre">Estimated</span> <span class="pre">storage</span> <span class="pre">capacity</span> <span class="pre">required</span> <span class="pre">for</span> <span class="pre">transaction</span> <span class="pre">log</span></code></div>
|
|
571
|
-
<div class="line"><code class="docutils literal"><span class="pre">S</span> <span class="pre">=</span> <span class="pre">Average</span> <span class="pre">message</span> <span class="pre">size</span></code></div>
|
|
572
|
-
<div class="line"><code class="docutils literal"><span class="pre">N</span> <span class="pre">=</span> <span class="pre">Number</span> <span class="pre">of</span> <span class="pre">messages</span> <span class="pre">to</span> <span class="pre">retain</span></code></div>
|
|
573
|
-
<div class="line"><code class="docutils literal"><span class="pre">J</span> <span class="pre">=</span> <span class="pre">Journal</span> <span class="pre">file</span> <span class="pre">size</span></code></div>
|
|
574
|
-
<div class="line"><code class="docutils literal"><span class="pre">TI</span> <span class="pre">=</span> <span class="pre">Topic</span> <span class="pre">Index</span> <span class="pre">(if</span> <span class="pre">configured),</span> <span class="pre">larger</span> <span class="pre">of</span> <span class="pre">200MB</span> <span class="pre">or</span> <span class="pre">(64</span> <span class="pre">*</span> <span class="pre">number</span> <span class="pre">of</span> <span class="pre">messages</span> <span class="pre">indexed)</span></code></div>
|
|
575
|
-
</div>
|
|
576
|
-
</div></blockquote>
|
|
577
|
-
<p>Size your files to match the aging policy for the transaction log data.
|
|
578
|
-
To remove data from the transaction log, use AMPS actions to remove the
|
|
579
|
-
journal files that are no longer needed. You can size your files to make this
|
|
580
|
-
easier. For example, if your application typically generates 100GB a day
|
|
581
|
-
of transaction log, you could size your files in 25GB units to make it
|
|
582
|
-
easier to remove 100GB increments.</p>
|
|
583
|
-
<p>AMPS allows you to preallocate files for the transaction log. For
|
|
584
|
-
applications that are very latency-sensitive, preallocation can help
|
|
585
|
-
provide consistent latency. We recommend that those applications
|
|
586
|
-
preallocate files, if storage capacity and retention policy permit. For
|
|
587
|
-
example, an application that sees heavy throughput during a working day
|
|
588
|
-
might preallocate enough files so that there is no need for additional
|
|
589
|
-
allocation within the working day.</p>
|
|
590
|
-
<p>Notice that, if your application uses replication, the AMPS transaction log
|
|
591
|
-
maintenance actions will not delete unreplicated messages that this instance
|
|
592
|
-
is responsible for replicating. This means that, when calculating the maximum
|
|
593
|
-
storage space required, the recovery window for a failure is also important.
|
|
594
|
-
For example, many systems have a policy of not restarting a failed system
|
|
595
|
-
until a scheduled maintenance window: if one server in a replicated set of
|
|
596
|
-
servers could, potentially, be offline for up to 8 hours, then the other
|
|
597
|
-
servers must be able to store a minimum of 8 hours of journals, even in cases
|
|
598
|
-
where the normal retention period would be shorter.</p>
|
|
599
|
-
</div>
|
|
600
|
-
<div class="section" id="file-backed-queue-metadata">
|
|
601
|
-
<h4>File-Backed Queue Metadata<a class="headerlink" href="#file-backed-queue-metadata" title="Permalink to this headline">¶</a></h4>
|
|
602
|
-
<p>AMPS can, optionally, persist queue metadata to the filesystem to
|
|
603
|
-
allow metadata to be paged out of memory and potentially
|
|
604
|
-
improve recovery time.</p>
|
|
605
|
-
<p>For any queue that uses the <code class="docutils literal"><span class="pre">FileBackedMetadata</span></code> option,
|
|
606
|
-
the following formula can be used to estimate the storage space
|
|
607
|
-
that AMPS may use for each queue:</p>
|
|
608
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="n">GREATER</span> <span class="n">OF</span> <span class="p">(</span> <span class="p">(</span><span class="n">MaxMsgCount</span> <span class="o">*</span> <span class="mi">250</span> <span class="nb">bytes</span> <span class="p">)</span> <span class="ow">or</span> <span class="mi">4</span><span class="n">MB</span> <span class="p">)</span>
|
|
609
|
-
</pre></div>
|
|
610
|
-
</div>
|
|
611
|
-
<p><em>Queue Metadata Size</em></p>
|
|
612
|
-
<p>where:</p>
|
|
613
|
-
<blockquote>
|
|
614
|
-
<div><div class="line-block">
|
|
615
|
-
<div class="line"><code class="docutils literal"><span class="pre">MaxMsgCount</span> <span class="pre">=</span> <span class="pre">Maximum</span> <span class="pre">number</span> <span class="pre">of</span> <span class="pre">messages</span> <span class="pre">active</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">queue</span></code></div>
|
|
616
|
-
</div>
|
|
617
|
-
</div></blockquote>
|
|
618
|
-
<p>The maximum number of messages active is the largest number of
|
|
619
|
-
unacknowledged messages in the queue since the instance was
|
|
620
|
-
started, as measured by the maximum value of the <code class="docutils literal"><span class="pre">queue_depth</span></code>
|
|
621
|
-
metric for the queue. Notice that if the queue also uses
|
|
622
|
-
the <code class="docutils literal"><span class="pre">TargetQueueDepth</span></code> option, the active message count will
|
|
623
|
-
typically be the <code class="docutils literal"><span class="pre">TargetQueueDepth</span></code> unless AMPS has temporarily
|
|
624
|
-
expanded this depth to avoid halting queue delivery.</p>
|
|
625
|
-
<p>AMPS preallocates files of approximately 4MB for the metadata
|
|
626
|
-
cache, then grows the file if needed to maintain metadata. The
|
|
627
|
-
size of the file does not shrink while the instance is running.
|
|
628
|
-
AMPS may reduce the size of the file during recovery. As with
|
|
629
|
-
all capacity estimates, this formula is intended to provide a
|
|
630
|
-
working approximation of the amount of disk space needed, and
|
|
631
|
-
does not mean that the file will be precisely the size the
|
|
632
|
-
formula indicates.</p>
|
|
633
|
-
</div>
|
|
634
|
-
<div class="section" id="choosing-storage-devices">
|
|
635
|
-
<h4>Choosing Storage Devices<a class="headerlink" href="#choosing-storage-devices" title="Permalink to this headline">¶</a></h4>
|
|
636
|
-
<p>The previous sections discuss the scope of sizing the storage, however
|
|
637
|
-
scenarios exist where the performance of the storage devices must also
|
|
638
|
-
be taken into consideration.</p>
|
|
639
|
-
<p>In cases where messages are persisted (to the transaction log, to a
|
|
640
|
-
topic in the SOW, or both), overall throughput of the instance
|
|
641
|
-
can be limited by the performance of the storage device. It
|
|
642
|
-
is important that the storage device be able to keep up with the peak
|
|
643
|
-
rate at which the instance will receive messages.</p>
|
|
644
|
-
<p>Different aspects of the AMPS server have different patterns of
|
|
645
|
-
access to storage, as shown below:</p>
|
|
646
|
-
<table border="1" class="docutils" id="id1">
|
|
647
|
-
<caption><span class="caption-text"><em>Access patterns for AMPS features</em></span><a class="headerlink" href="#id1" title="Permalink to this table">¶</a></caption>
|
|
648
|
-
<colgroup>
|
|
649
|
-
<col width="50%" />
|
|
650
|
-
<col width="50%" />
|
|
651
|
-
</colgroup>
|
|
652
|
-
<thead valign="bottom">
|
|
653
|
-
<tr class="row-odd"><th class="head"><strong>Feature</strong></th>
|
|
654
|
-
<th class="head"><strong>Storage Usage</strong></th>
|
|
655
|
-
</tr>
|
|
656
|
-
</thead>
|
|
657
|
-
<tbody valign="top">
|
|
658
|
-
<tr class="row-even"><td>State of the World</td>
|
|
659
|
-
<td>Random access read/write/update</td>
|
|
660
|
-
</tr>
|
|
661
|
-
<tr class="row-odd"><td>Transaction Log</td>
|
|
662
|
-
<td>Sequential write for recording
|
|
663
|
-
messages / sequential read for
|
|
664
|
-
replay, replication and queue
|
|
665
|
-
message distribution</td>
|
|
666
|
-
</tr>
|
|
667
|
-
<tr class="row-even"><td>Error and Event Log</td>
|
|
668
|
-
<td>Sequential write only</td>
|
|
669
|
-
</tr>
|
|
670
|
-
<tr class="row-odd"><td>Statistics Database</td>
|
|
671
|
-
<td>Random access read/write/update</td>
|
|
672
|
-
</tr>
|
|
673
|
-
</tbody>
|
|
674
|
-
</table>
|
|
675
|
-
<p>For each of these uses, ensure that the underlying system has enough
|
|
676
|
-
I/O bandwidth to meet the needs of an instance. For example, publishing
|
|
677
|
-
to a topic that is in the SOW and also recorded in the transaction
|
|
678
|
-
log will write the message to both the SOW and the transaction
|
|
679
|
-
log, and may (depending on logging settings) also generate a write to the
|
|
680
|
-
error and event log.</p>
|
|
681
|
-
<p>Consider a case where an instance is recording messages in the transaction
|
|
682
|
-
log at a high incoming message rate. If performance greater than 50MB/second
|
|
683
|
-
is required for the AMPS transaction log, experience has demonstrated
|
|
684
|
-
that flash storage (or better) would be recommended. Magnetic hard disks
|
|
685
|
-
lack the performance to produce results greater than this with a consistent
|
|
686
|
-
latency profile.</p>
|
|
687
|
-
<p>For applications that require high performance and persist state, 60East
|
|
688
|
-
recommends separate storage for the SOW, the transaction log and the
|
|
689
|
-
error and event log where practical.</p>
|
|
690
|
-
</div>
|
|
691
|
-
</div>
|
|
692
|
-
<div class="section" id="cpu">
|
|
693
|
-
<h3>CPU<a class="headerlink" href="#cpu" title="Permalink to this headline">¶</a></h3>
|
|
694
|
-
<p id="index-5">SOW queries with content filtering make heavy use
|
|
695
|
-
of CPU-based operations and, as such, CPU performance directly impacts
|
|
696
|
-
the content filtering performance and rates at which AMPS processes
|
|
697
|
-
messages. The number of cores within a CPU largely determines how
|
|
698
|
-
quickly SOW queries execute.</p>
|
|
699
|
-
<p>AMPS contains optimizations which are only enabled on recent 64-bit x86
|
|
700
|
-
CPUs. To achieve the highest level performance, consider deploying on a
|
|
701
|
-
CPU which includes support for the SSE 4.2 instruction set.</p>
|
|
702
|
-
<p>To give an idea of AMPS performance, repeated testing has demonstrated
|
|
703
|
-
that a moderate query filter with 5 predicates can be executed against
|
|
704
|
-
1KB messages at more than 1,000,000 messages per second, per core on an
|
|
705
|
-
Intel i7 3GHz CPU. This applies to both subscription based content
|
|
706
|
-
filtering and SOW queries. Actual messaging rates will vary based on
|
|
707
|
-
matching ratios and network utilization.</p>
|
|
708
|
-
</div>
|
|
709
|
-
<div class="section" id="network">
|
|
710
|
-
<h3>Network<a class="headerlink" href="#network" title="Permalink to this headline">¶</a></h3>
|
|
711
|
-
<p id="index-6">When capacity planning a network for AMPS, the requirements for messaging
|
|
712
|
-
traffic are largely dependent on the following factors:</p>
|
|
713
|
-
<ul class="simple">
|
|
714
|
-
<li>Average message size</li>
|
|
715
|
-
<li>The rate at which publishers will publish messages to AMPS</li>
|
|
716
|
-
<li>The number of publishers and the number of subscribers</li>
|
|
717
|
-
</ul>
|
|
718
|
-
<p>AMPS requires sufficient network capacity to service inbound publishing
|
|
719
|
-
as well as outbound messaging requirements. In most deployments,
|
|
720
|
-
outbound messaging to subscribers and query clients has the highest
|
|
721
|
-
bandwidth requirements due to the increased likeliness for a “one to
|
|
722
|
-
many” relationship of a single published message matching
|
|
723
|
-
subscriptions/queries for many clients.</p>
|
|
724
|
-
<p>Estimating network capacity requires knowledge about several factors,
|
|
725
|
-
including but not limited to: the average message size published to the
|
|
726
|
-
AMPS instance, the number of messages published per second, the average
|
|
727
|
-
expected match ratio per subscription, the number of subscriptions, and
|
|
728
|
-
the background query load. Once these key metrics are known, then the
|
|
729
|
-
necessary network capacity can be calculated:</p>
|
|
730
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="n">R</span> <span class="o">*</span> <span class="n">Sz</span> <span class="p">(</span> <span class="mi">1</span> <span class="o">+</span> <span class="n">M</span> <span class="o">*</span> <span class="n">Sb</span> <span class="p">)</span> <span class="o">+</span> <span class="n">Q</span>
|
|
731
|
-
</pre></div>
|
|
732
|
-
</div>
|
|
733
|
-
<p><em>Network capacity formula</em></p>
|
|
734
|
-
<p>where:</p>
|
|
735
|
-
<blockquote>
|
|
736
|
-
<div><div class="line-block">
|
|
737
|
-
<div class="line"><code class="docutils literal"><span class="pre">R</span>  <span class="pre">=</span> <span class="pre">Rate</span></code></div>
|
|
738
|
-
<div class="line"><code class="docutils literal"><span class="pre">Sz</span> <span class="pre">=</span> <span class="pre">Average</span> <span class="pre">Message</span> <span class="pre">Size</span></code></div>
|
|
739
|
-
<div class="line"><code class="docutils literal"><span class="pre">M</span>  <span class="pre">=</span> <span class="pre">Match</span> <span class="pre">Ratio</span></code></div>
|
|
740
|
-
<div class="line"><code class="docutils literal"><span class="pre">Sb</span> <span class="pre">=</span> <span class="pre">Number</span> <span class="pre">of</span> <span class="pre">Subscribers</span></code></div>
|
|
741
|
-
<div class="line"><code class="docutils literal"><span class="pre">Q</span>  <span class="pre">=</span> <span class="pre">Query</span> <span class="pre">Load</span></code></div>
|
|
742
|
-
</div>
|
|
743
|
-
</div></blockquote>
|
|
744
|
-
<p>where “Query Load” is defined as:</p>
|
|
745
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="n">Mq</span> <span class="o">*</span> <span class="n">S</span> <span class="o">*</span> <span class="n">Qs</span>
|
|
746
|
-
</pre></div>
|
|
747
|
-
</div>
|
|
748
|
-
<p>where:</p>
|
|
749
|
-
<blockquote>
|
|
750
|
-
<div><div class="line-block">
|
|
751
|
-
<div class="line"><code class="docutils literal"><span class="pre">Mq</span> <span class="pre">=</span> <span class="pre">Messages</span> <span class="pre">per</span> <span class="pre">Query</span></code></div>
|
|
752
|
-
<div class="line"><code class="docutils literal"><span class="pre">S</span> <span class="pre">=</span> <span class="pre">Average</span> <span class="pre">Message</span> <span class="pre">Size</span></code></div>
|
|
753
|
-
<div class="line"><code class="docutils literal"><span class="pre">Qs</span> <span class="pre">=</span> <span class="pre">Queries</span> <span class="pre">per</span> <span class="pre">Second</span></code></div>
|
|
754
|
-
</div>
|
|
755
|
-
</div></blockquote>
|
|
756
|
-
<p>In a deployment required to process published messages at a rate of 5000
|
|
757
|
-
messages per second, with each message having an average message size of
|
|
758
|
-
600 bytes, the expected match rate per subscription is 2% (or 0.02) with
|
|
759
|
-
100 subscriptions. The deployment is also expected to process 5 queries
|
|
760
|
-
per 1 minute (or 12 queries per second), with each query expected to
|
|
761
|
-
return 1000 messages.</p>
|
|
762
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="mi">5000</span> <span class="o">*</span> <span class="mi">600</span> <span class="n">B</span> <span class="o">*</span> <span class="p">(</span> <span class="mi">1</span> <span class="o">+</span> <span class="mf">0.02</span> <span class="o">*</span> <span class="mi">100</span> <span class="p">)</span> <span class="o">+</span> <span class="p">(</span> <span class="mi">1000</span> <span class="o">*</span> <span class="mi">600</span> <span class="n">B</span> <span class="o">*</span> <span class="mi">1</span><span class="o">/</span><span class="mi">12</span> <span class="p">)</span> <span class="o">~</span> <span class="mi">9</span> <span class="n">MB</span> <span class="o">/</span> <span class="n">s</span> <span class="o">~</span> <span class="mi">72</span> <span class="n">Mb</span> <span class="o">/</span> <span class="n">s</span>
|
|
763
|
-
</pre></div>
|
|
764
|
-
</div>
|
|
765
|
-
<p>Based on these requirements, this deployment would need at least 72Mb/s
|
|
766
|
-
of network capacity to achieve the desired goals. This analysis
|
|
767
|
-
demonstrates AMPS by itself would fall into a 100Mb/s class network. It
|
|
768
|
-
is important to note, this analysis does not examine any other network
|
|
769
|
-
based activity which may exist on the host and as such, a larger
|
|
770
|
-
capacity networking infrastructure than 100Mb/s would likely be
|
|
771
|
-
required.</p>
|
|
772
|
-
<div class="section" id="replication-network-bandwidth">
|
|
773
|
-
<h4>Replication Network Bandwidth<a class="headerlink" href="#replication-network-bandwidth" title="Permalink to this headline">¶</a></h4>
|
|
774
|
-
<p>For replication connections, the general recommendation is to estimate
|
|
775
|
-
bandwidth needs as though each outgoing replication destination is
|
|
776
|
-
a subscriber that subscribes to all of the replicated topics, and each incoming
|
|
777
|
-
destination is a publisher that fully publishes the replicated topics. Although
|
|
778
|
-
AMPS replication connections support compression, the general recommendation
|
|
779
|
-
is to provision enough network capacity to support the full replication
|
|
780
|
-
stream, and then to use compression to save capacity.</p>
|
|
781
|
-
</div>
|
|
782
|
-
<div class="section" id="additional-network-considerations">
|
|
783
|
-
<h4>Additional Network Considerations<a class="headerlink" href="#additional-network-considerations" title="Permalink to this headline">¶</a></h4>
|
|
784
|
-
<p>When calculating the available bandwidth for an instance, it is also
|
|
785
|
-
important to take into account any other use of the network. For example,
|
|
786
|
-
if the system uses network attached storage, and the traffic to that
|
|
787
|
-
storage is not isolated from messaging traffic, bandwidth to the
|
|
788
|
-
storage device should also be taken into account when planning the
|
|
789
|
-
network capacity available to the instance.</p>
|
|
790
|
-
<p>Likewise, any other process that consumes bandwidth, such as monitoring
|
|
791
|
-
applications or log collection processes, should be considered when
|
|
792
|
-
planning the overall bandwidth capacity available.</p>
|
|
793
|
-
</div>
|
|
794
|
-
</div>
|
|
795
|
-
<div class="section" id="numa-considerations">
|
|
796
|
-
<h3>NUMA Considerations<a class="headerlink" href="#numa-considerations" title="Permalink to this headline">¶</a></h3>
|
|
797
|
-
<p>AMPS is designed to take advantage of non-uniform memory access (NUMA).
|
|
798
|
-
For the lowest latency in networking, we recommend that you install your
|
|
799
|
-
NIC in the slot closest to NUMA node 0. When AMPS NUMA tuning is enabled,
|
|
800
|
-
AMPS runs critical threads on node 0, so positioning the NIC closest to that
|
|
801
|
-
node provides the shortest path from processor to NIC.</p>
|
|
802
|
-
<p>When a single instance of AMPS is deployed on the system (physical host), as
|
|
803
|
-
is the case with most critical production systems, 60East recommends leaving
|
|
804
|
-
AMPS NUMA tuning enabled (this is the default).</p>
|
|
805
|
-
<p>If more than one instance of AMPS is running on the same physical host,
|
|
806
|
-
or if other CPU-intensive processes are running on the same physical
|
|
807
|
-
host, 60East recommends disabling AMPS NUMA tuning in the AMPS
|
|
808
|
-
configuration file and relying on the operating system NUMA management.
|
|
809
|
-
Likewise, if a mechanism is used to restrict AMPS to specific processors,
|
|
810
|
-
AMPS NUMA tuning should be disabled.</p>
|
|
811
|
-
<div class="admonition important">
|
|
812
|
-
<p class="first admonition-title">Important</p>
|
|
813
|
-
<p class="last">When AMPS is deployed on a virtual machine, 60East recommends disabling
|
|
814
|
-
the AMPS level NUMA tuning in the configuration file.</p>
|
|
815
|
-
</div>
|
|
816
|
-
</div>
|
|
817
|
-
</div>
|
|
818
|
-
<div class="section" id="linux-operating-system-configuration">
|
|
819
|
-
<span id="operation-linux-os-system-configuration"></span><h2>Linux Operating System Configuration<a class="headerlink" href="#linux-operating-system-configuration" title="Permalink to this headline">¶</a></h2>
|
|
820
|
-
<p>This section covers some settings which are specific to running AMPS on
|
|
821
|
-
a Linux Operating System.</p>
|
|
822
|
-
<div class="section" id="ulimit">
|
|
823
|
-
<span id="section-operation-deployment-linux-ulimit"></span><h3>ulimit<a class="headerlink" href="#ulimit" title="Permalink to this headline">¶</a></h3>
|
|
824
|
-
<p>The <code class="docutils literal"><span class="pre">ulimit</span></code> command is used by a Linux administrator to get and set
|
|
825
|
-
user limits on various system resources.</p>
|
|
826
|
-
<p><code class="docutils literal"><span class="pre">ulimit</span> <span class="pre">-c</span></code></p>
|
|
827
|
-
<p>It is common for an AMPS instance to be configured to consume gigabytes
|
|
828
|
-
of memory for large SOW caches. If a failure were to occur in a large
|
|
829
|
-
deployment it could take seconds (maybe even hours, depending on storage
|
|
830
|
-
performance and process size) to dump the core file. AMPS has a
|
|
831
|
-
minidump reporting mechanism built in that collects information
|
|
832
|
-
important to debugging an instance before exiting. This minidump is much
|
|
833
|
-
faster than dumping a core file to disk. For this reason, it is
|
|
834
|
-
recommended that the per user core file size limit is set to 0 to
|
|
835
|
-
prevent a large process image from being dumped to storage.</p>
|
|
836
|
-
<p><code class="docutils literal"><span class="pre">ulimit</span> <span class="pre">-n</span></code></p>
|
|
837
|
-
<p>The number of file descriptors allowed for a user running AMPS needs to
|
|
838
|
-
be at least double the sum of counts for the following: connected
|
|
839
|
-
clients, SOW topics and pre-allocated journal files.</p>
|
|
840
|
-
<ul class="simple">
|
|
841
|
-
<li><em>Minimum:</em> 4096</li>
|
|
842
|
-
<li><em>Recommended:</em> 32768, or the value recommended by AMPS in any diagnostic
|
|
843
|
-
messages, whichever is greater</li>
|
|
844
|
-
</ul>
|
|
845
|
-
</div>
|
|
846
|
-
<div class="section" id="transparent-huge-pages">
|
|
847
|
-
<span id="index-7"></span><h3>Transparent Huge Pages<a class="headerlink" href="#transparent-huge-pages" title="Permalink to this headline">¶</a></h3>
|
|
848
|
-
<p>Transparent huge pages is enabled by default for most linux distributions,
|
|
849
|
-
which can add significant overhead to memory management. For this reason
|
|
850
|
-
60East recommends changing the setting to <code class="docutils literal"><span class="pre">madvise</span></code>, which requires
|
|
851
|
-
applications to explicitly request use of transparent huge pages. Previously
|
|
852
|
-
the recommendation was to use <code class="docutils literal"><span class="pre">never</span></code>, which is still acceptable, but is
|
|
853
|
-
less flexible as it disables transparent huge pages for all applications
|
|
854
|
-
running on the system.</p>
|
|
855
|
-
<p>To change the setting until the operating system is rebooted, the following
|
|
856
|
-
command can be used:</p>
|
|
857
|
-
<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">echo</span> <span class="n">never</span> <span class="o">></span> <span class="o">/</span><span class="n">sys</span><span class="o">/</span><span class="n">kernel</span><span class="o">/</span><span class="n">mm</span><span class="o">/</span><span class="n">transparent_hugepage</span><span class="o">/</span><span class="n">enabled</span>
|
|
858
|
-
</pre></div>
|
|
859
|
-
</div>
|
|
860
|
-
<p>To make a permanent change to this setting, add the above command to the
|
|
861
|
-
startup scripts, or add the <code class="docutils literal"><span class="pre">transparent_hugepage=madvise</span></code> option to the kernel
|
|
862
|
-
startup flags (see the documentation for your Linux distribution for details).</p>
|
|
863
|
-
<p><em>Recommended: madvise</em></p>
|
|
864
|
-
</div>
|
|
865
|
-
<div class="section" id="proc-sys-fs-aio-max-nr">
|
|
866
|
-
<h3>/proc/sys/fs/aio-max-nr<a class="headerlink" href="#proc-sys-fs-aio-max-nr" title="Permalink to this headline">¶</a></h3>
|
|
867
|
-
<p>Each AMPS instance requires AIO in the kernel to support at least 16384
|
|
868
|
-
plus 8192 for each SOW topic in simultaneous I/O operations. The setting
|
|
869
|
-
<code class="docutils literal"><span class="pre">aio-max-nr</span></code> is global to the host and impacts all applications. As
|
|
870
|
-
such this value needs to be set high enough to service all applications
|
|
871
|
-
using AIO on the host.</p>
|
|
872
|
-
<ul class="simple">
|
|
873
|
-
<li><em>Minimum:</em> 65536</li>
|
|
874
|
-
<li><em>Recommended:</em> 1048576</li>
|
|
875
|
-
</ul>
|
|
876
|
-
<p>To view the value of this setting, as root you can enter the following
|
|
877
|
-
command:</p>
|
|
878
|
-
<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">cat</span> <span class="o">/</span><span class="n">proc</span><span class="o">/</span><span class="n">sys</span><span class="o">/</span><span class="n">fs</span><span class="o">/</span><span class="n">aio</span><span class="o">-</span><span class="nb">max</span><span class="o">-</span><span class="n">nr</span>
|
|
879
|
-
</pre></div>
|
|
880
|
-
</div>
|
|
881
|
-
<p>To edit this value, as root you can enter the following command:</p>
|
|
882
|
-
<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">sysctl</span> <span class="o">-</span><span class="n">w</span> <span class="n">fs</span><span class="o">.</span><span class="n">aio</span><span class="o">-</span><span class="nb">max</span><span class="o">-</span><span class="n">nr</span> <span class="o">=</span> <span class="mi">1048576</span>
|
|
883
|
-
</pre></div>
|
|
884
|
-
</div>
|
|
885
|
-
<p>This command will update the value for <code class="docutils literal"><span class="pre">/proc/sys/fs/aio-max-nr</span></code> and
|
|
886
|
-
allow 1,048,576 simultaneous I/O operations, but will only do so until
|
|
887
|
-
the next time the machine is rebooted. To make a permanent change to
|
|
888
|
-
this setting, as a root user, edit the <code class="docutils literal"><span class="pre">/etc/sysctl.conf</span></code> file and
|
|
889
|
-
either edit or append the following setting:</p>
|
|
890
|
-
<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">fs</span><span class="o">.</span><span class="n">aio</span><span class="o">-</span><span class="nb">max</span><span class="o">-</span><span class="n">nr</span> <span class="o">=</span> <span class="mi">1048576</span>
|
|
891
|
-
</pre></div>
|
|
892
|
-
</div>
|
|
893
|
-
</div>
|
|
894
|
-
<div class="section" id="proc-sys-fs-file-max">
|
|
895
|
-
<h3>/proc/sys/fs/file-max<a class="headerlink" href="#proc-sys-fs-file-max" title="Permalink to this headline">¶</a></h3>
|
|
896
|
-
<p>Each AMPS instance needs file descriptors to service connections and
|
|
897
|
-
maintain file handles for open files. This number needs to be at least
|
|
898
|
-
double the sum of counts for the following: connected clients, SOW
|
|
899
|
-
topics and pre-allocated journal files. This file-max setting is global
|
|
900
|
-
to the host and impacts all applications, so this needs to be set high
|
|
901
|
-
enough to service all applications on the host.</p>
|
|
902
|
-
<ul class="simple">
|
|
903
|
-
<li><em>Minimum:</em> 262144</li>
|
|
904
|
-
<li><em>Recommended:</em> 6815744</li>
|
|
905
|
-
</ul>
|
|
906
|
-
<p>To view the value of this setting, as root you can enter the following
|
|
907
|
-
command:</p>
|
|
908
|
-
<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">cat</span> <span class="o">/</span><span class="n">proc</span><span class="o">/</span><span class="n">sys</span><span class="o">/</span><span class="n">fs</span><span class="o">/</span><span class="n">file</span><span class="o">-</span><span class="nb">max</span>
|
|
909
|
-
</pre></div>
|
|
910
|
-
</div>
|
|
911
|
-
<p>To edit this value, as root you can enter the following command:</p>
|
|
912
|
-
<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">sysctl</span> <span class="o">-</span><span class="n">w</span> <span class="n">fs</span><span class="o">.</span><span class="n">file</span><span class="o">-</span><span class="nb">max</span> <span class="o">=</span> <span class="mi">6815744</span>
|
|
913
|
-
</pre></div>
|
|
914
|
-
</div>
|
|
915
|
-
<p>This command will update the value for <code class="docutils literal"><span class="pre">/proc/sys/fs/file-max</span></code> and
|
|
916
|
-
allow 6,815,744 concurrent files to be opened, but will only do so until
|
|
917
|
-
the next time the machine is rebooted. To make a permanent change to
|
|
918
|
-
this setting, as a root user, edit the <code class="docutils literal"><span class="pre">/etc/sysctl.conf</span></code> file and
|
|
919
|
-
either edit or append the following setting:</p>
|
|
920
|
-
<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">fs</span><span class="o">.</span><span class="n">file</span><span class="o">-</span><span class="nb">max</span> <span class="o">=</span> <span class="mi">6815744</span>
|
|
921
|
-
</pre></div>
|
|
922
|
-
</div>
|
|
923
|
-
</div>
|
|
924
|
-
<div class="section" id="proc-sys-vm-min-free-kbytes">
|
|
925
|
-
<h3>/proc/sys/vm/min_free_kbytes<a class="headerlink" href="#proc-sys-vm-min-free-kbytes" title="Permalink to this headline">¶</a></h3>
|
|
926
|
-
<p>This parameter sets the minimum amount of memory to keep free in the system.
|
|
927
|
-
Setting this value properly can help the operating system function more
|
|
928
|
-
effectively in low-memory situations. If this value is set too low, the
|
|
929
|
-
operating system can have difficulty reclaiming memory, which can lead
|
|
930
|
-
to unnecessary out-of-memory events. If this value is set too high, overall
|
|
931
|
-
system efficiency decreases as the operating system can spend more time
|
|
932
|
-
than necessary reclaiming memory.</p>
|
|
933
|
-
<p>60East recommends setting this parameter to 1% of the physical memory
|
|
934
|
-
on the system, rounding up to the nearest GB.</p>
|
|
935
|
-
<p id="index-8">Notice that the units of this parameter are in kilobytes. For example, to set
|
|
936
|
-
this value for a system that has 128GB of memory, you would calculate 1% of
|
|
937
|
-
the physical memory (1.28 GB), round up to the nearest GB (2 GB) and then
|
|
938
|
-
allocate 2000000 KB as the min_free_kbytes.</p>
|
|
939
|
-
<ul class="simple">
|
|
940
|
-
<li><em>Minimum:</em> 1000000 (1GB)</li>
|
|
941
|
-
<li><em>Recommended:</em> 1% of physical memory, rounded up to the nearest GB</li>
|
|
942
|
-
</ul>
|
|
943
|
-
<p>To edit this value, as root you can enter the following command:</p>
|
|
944
|
-
<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">sysctl</span> <span class="o">-</span><span class="n">w</span> <span class="n">vm</span><span class="o">.</span><span class="n">min_free_kbytes</span><span class="o">=</span><span class="mi">2000000</span>
|
|
945
|
-
</pre></div>
|
|
946
|
-
</div>
|
|
947
|
-
<p>Notice that this tuning recommendation is designed for a server-class machine
|
|
948
|
-
with a reasonable amount of memory. For a small development machine or
|
|
949
|
-
blade (for example, a system with less than 32GB of memory), leaving this
|
|
950
|
-
parameter at the operating system default may be more appropriate.</p>
|
|
951
|
-
</div>
|
|
952
|
-
<div class="section" id="proc-sys-vm-max-map-count">
|
|
953
|
-
<h3>/proc/sys/vm/max_map_count<a class="headerlink" href="#proc-sys-vm-max-map-count" title="Permalink to this headline">¶</a></h3>
|
|
954
|
-
<p>AMPS makes extensive use of memory mapped files, and frequently modifies the
|
|
955
|
-
maps. The <code class="docutils literal"><span class="pre">/proc/sys/vm/max_map_count</span></code> parameter sets the maximum number of
|
|
956
|
-
maps that the Linux kernel will allow for a process. If the number of
|
|
957
|
-
requested maps exceeds the number of maps in this parameter, memory allocation
|
|
958
|
-
operations can fail even when there is sufficient memory available.</p>
|
|
959
|
-
<p id="index-9">This setting is global to the host and applies to all applications, so this
|
|
960
|
-
needs to be set high enough for the most map-intensive application on the host.</p>
|
|
961
|
-
<ul class="simple">
|
|
962
|
-
<li><em>Minimum:</em> 65530</li>
|
|
963
|
-
<li><em>Recommended:</em> 500000</li>
|
|
964
|
-
</ul>
|
|
965
|
-
<p>To edit this value, as root you can enter the following command:</p>
|
|
966
|
-
<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">sysctl</span> <span class="o">-</span><span class="n">w</span> <span class="n">vm</span><span class="o">.</span><span class="n">max_map_count</span><span class="o">=</span><span class="mi">500000</span>
|
|
967
|
-
</pre></div>
|
|
968
|
-
</div>
|
|
969
|
-
<p>This command will update the value for <code class="docutils literal"><span class="pre">/proc/sys/vm/max_map_count</span></code> and
|
|
970
|
-
allow 500,000 maps to be created, but will only do so until
|
|
971
|
-
the next time the machine is rebooted. To make a permanent change to
|
|
972
|
-
this setting, as a root user, edit the <code class="docutils literal"><span class="pre">/etc/sysctl.conf</span></code> file and
|
|
973
|
-
either edit or append the following setting:</p>
|
|
974
|
-
<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">vm</span><span class="o">.</span><span class="n">max_map_count</span><span class="o">=</span><span class="mi">500000</span>
|
|
975
|
-
</pre></div>
|
|
976
|
-
</div>
|
|
977
|
-
</div>
|
|
978
|
-
<div class="section" id="proc-sys-vm-swappiness">
|
|
979
|
-
<h3>/proc/sys/vm/swappiness<a class="headerlink" href="#proc-sys-vm-swappiness" title="Permalink to this headline">¶</a></h3>
|
|
980
|
-
<p>AMPS performs best when the data that it needs to retain is in memory. If
|
|
981
|
-
the operating system needs to use swap because the system requires more
|
|
982
|
-
memory than is available, performance degrades substantially.</p>
|
|
983
|
-
<p>60East recommends that, for systems that host performance-critical instances
|
|
984
|
-
of AMPS, the <code class="docutils literal"><span class="pre">vm.swappiness</span></code> setting is set to <code class="docutils literal"><span class="pre">1</span></code>. This will minimize
|
|
985
|
-
swapping on this system, which will improve performance with the tradeoff
|
|
986
|
-
of making it more likely for processes to be killed by the operating system
|
|
987
|
-
in low-memory situations.</p>
|
|
988
|
-
<p id="index-10">This setting is global to the host and applies to all applications.</p>
|
|
989
|
-
<ul class="simple">
|
|
990
|
-
<li><em>Recommended:</em> 1</li>
|
|
991
|
-
</ul>
|
|
992
|
-
<p>To edit this value, as root you can enter the following command:</p>
|
|
993
|
-
<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">sysctl</span> <span class="o">-</span><span class="n">w</span> <span class="n">vm</span><span class="o">.</span><span class="n">swappiness</span><span class="o">=</span><span class="mi">1</span>
|
|
994
|
-
</pre></div>
|
|
995
|
-
</div>
|
|
996
|
-
<p>This command will update the value for <code class="docutils literal"><span class="pre">/proc/sys/vm/swappiness</span></code> and
|
|
997
|
-
direct the operating system to avoid using swap space until the system
|
|
998
|
-
is under severe memory pressure.</p>
|
|
999
|
-
<p>Using the command above will change the swappiness setting until the
|
|
1000
|
-
operating system is rebooted.To make a permanent change to
|
|
1001
|
-
this setting, as a root user, edit the <code class="docutils literal"><span class="pre">/etc/sysctl.conf</span></code> file and
|
|
1002
|
-
either edit or append the following setting:</p>
|
|
1003
|
-
<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">vm</span><span class="o">.</span><span class="n">swappiness</span><span class="o">=</span><span class="mi">1</span>
|
|
1004
|
-
</pre></div>
|
|
1005
|
-
</div>
|
|
1006
|
-
</div>
|
|
1007
|
-
<div class="section" id="proc-sys-net-ipv4-tcp-frto">
|
|
1008
|
-
<h3>/proc/sys/net/ipv4/tcp_frto<a class="headerlink" href="#proc-sys-net-ipv4-tcp-frto" title="Permalink to this headline">¶</a></h3>
|
|
1009
|
-
<p>This option controls whether Forward RTO-Recovery (FRTO) is enabled for the
|
|
1010
|
-
TCP network. Enabling FRTO can be beneficial for overall network performance
|
|
1011
|
-
if a system is <em>sending</em> packets over wireless networks with substantial
|
|
1012
|
-
interference (for example, public WiFi in an urban area). However, this
|
|
1013
|
-
recovery algorithm can reduce performance in wired networks. While this option
|
|
1014
|
-
is enabled on most current Linux distributions by default, disabling the
|
|
1015
|
-
option can improve network performance.</p>
|
|
1016
|
-
<p>60East recommends disabling this option unless the server is directly
|
|
1017
|
-
delivering traffic over a congested WiFi network.</p>
|
|
1018
|
-
<p id="index-11">This setting is global to the host and applies to all applications.</p>
|
|
1019
|
-
<ul class="simple">
|
|
1020
|
-
<li><em>Recommended:</em> 0</li>
|
|
1021
|
-
</ul>
|
|
1022
|
-
<p>To edit this value, as root you can enter the following command:</p>
|
|
1023
|
-
<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">sysctl</span> <span class="o">-</span><span class="n">w</span> <span class="n">net</span><span class="o">.</span><span class="n">ipv4</span><span class="o">.</span><span class="n">tcp_frto</span><span class="o">=</span><span class="mi">0</span>
|
|
1024
|
-
</pre></div>
|
|
1025
|
-
</div>
|
|
1026
|
-
<p>This command will update the value for <code class="docutils literal"><span class="pre">/proc/sys/net/ipv4/tcp_frto</span></code> and
|
|
1027
|
-
direct the operating system to disable FRTO.</p>
|
|
1028
|
-
<p>Using the command above will change the setting until the
|
|
1029
|
-
operating system is rebooted. To make a permanent change to
|
|
1030
|
-
this setting, as a root user, edit the <code class="docutils literal"><span class="pre">/etc/sysctl.conf</span></code> file and
|
|
1031
|
-
either edit or append the following setting:</p>
|
|
1032
|
-
<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">net</span><span class="o">.</span><span class="n">ipv4</span><span class="o">.</span><span class="n">tcp_frto</span><span class="o">=</span><span class="mi">0</span>
|
|
1033
|
-
</pre></div>
|
|
1034
|
-
</div>
|
|
1035
|
-
</div>
|
|
1036
|
-
</div>
|
|
1037
|
-
<div class="section" id="upgrading-an-amps-installation">
|
|
1038
|
-
<span id="section-operation-upgrading"></span><h2>Upgrading an AMPS Installation<a class="headerlink" href="#upgrading-an-amps-installation" title="Permalink to this headline">¶</a></h2>
|
|
1039
|
-
<p id="index-12">This chapter describes how to upgrade an existing installation of AMPS.
|
|
1040
|
-
The steps presented here focus on upgrading the installation itself, and
|
|
1041
|
-
should be the only steps you need for upgrades that change the HOTFIX
|
|
1042
|
-
version number or the PREVIEW version number (as described in
|
|
1043
|
-
<a class="reference internal" href="intro.html#table-version-number-info"><span class="std std-ref">AMPS Version Number Components</span></a>).</p>
|
|
1044
|
-
<p>For changes that update the MAJOR or MINOR version number, AMPS may add
|
|
1045
|
-
features, change file or network formats, or change behavior. For these
|
|
1046
|
-
upgrades, you may need to make changes to the AMPS configuration file or
|
|
1047
|
-
update applications to adapt to new features or changes in behavior.</p>
|
|
1048
|
-
<p>60East recommends maintaining a test environment that you can use to
|
|
1049
|
-
test upgrades, particularly when an upgrade changes MAJOR or MINOR
|
|
1050
|
-
versions and you are taking advantage of new features or changed
|
|
1051
|
-
behavior.</p>
|
|
1052
|
-
<p>When the AMPS instance participates in replication, you must coordinate
|
|
1053
|
-
the instance upgrades when upgrading across AMPS versions.</p>
|
|
1054
|
-
<p>AMPS supports replication to and from versions 5.2.0.0 and
|
|
1055
|
-
later for the purposes of rolling upgrade. For long-term deployment,
|
|
1056
|
-
60East recommends that all AMPS instances that replicate to each other have
|
|
1057
|
-
the same MAJOR and MINOR version number, and preferably run the same release
|
|
1058
|
-
of AMPS.</p>
|
|
1059
|
-
<div class="section" id="upgrade-steps">
|
|
1060
|
-
<h3>Upgrade Steps<a class="headerlink" href="#upgrade-steps" title="Permalink to this headline">¶</a></h3>
|
|
1061
|
-
<p>Upgrading an AMPS installation involves the following steps:</p>
|
|
1062
|
-
<ol class="arabic simple">
|
|
1063
|
-
<li>Stop the running instance</li>
|
|
1064
|
-
<li>Install the new AMPS binaries</li>
|
|
1065
|
-
<li>If you are upgrading from an AMPS version prior to 5.0.0.0, upgrade any
|
|
1066
|
-
data files or configuration files that you want to retain</li>
|
|
1067
|
-
<li>If necessary, update the configuration file for the instance</li>
|
|
1068
|
-
<li>If necessary, update any applications that will use new features</li>
|
|
1069
|
-
<li>Restart the service</li>
|
|
1070
|
-
</ol>
|
|
1071
|
-
<p>AMPS supports replication from version 5.2.0.0 and later to this
|
|
1072
|
-
version of AMPS for the purposes of rolling upgrade with no (or minimal)
|
|
1073
|
-
downtime. 60East recommends that production installations of AMPS have the
|
|
1074
|
-
same MAJOR and MINOR version number at a minimum, and preferably run
|
|
1075
|
-
identical versions of AMPS.</p>
|
|
1076
|
-
</div>
|
|
1077
|
-
<div class="section" id="upgrading-amps-data-files">
|
|
1078
|
-
<h3>Upgrading AMPS Data Files<a class="headerlink" href="#upgrading-amps-data-files" title="Permalink to this headline">¶</a></h3>
|
|
1079
|
-
<p>AMPS may change the format and content of data files when upgrading
|
|
1080
|
-
across versions, as specified by the MAJOR and MINOR version number.
|
|
1081
|
-
This most commonly occurs when new features are added to AMPS that
|
|
1082
|
-
require different or additional information in the persisted files. The
|
|
1083
|
-
HISTORY file for the AMPS release lists when changes have been made that
|
|
1084
|
-
require data file changes.</p>
|
|
1085
|
-
<p>When upgrading to AMPS 5.0 or later, from a release prior to 5.0, you must
|
|
1086
|
-
upgrade the data files. For versions of AMPS 5.0 and later, backward
|
|
1087
|
-
compatibility is maintained and therefore there have been no changes to
|
|
1088
|
-
the data file formats.</p>
|
|
1089
|
-
<p>The AMPS distribution includes the <code class="docutils literal"><span class="pre">amps_upgrade</span></code> utility to process
|
|
1090
|
-
and upgrade data files. Unless you are upgrading from a version of
|
|
1091
|
-
AMPS prior to 5.0, there is no need to use this utility when
|
|
1092
|
-
upgrading AMPS.</p>
|
|
1093
|
-
</div>
|
|
1094
|
-
<div class="section" id="downgrading-amps-data-files">
|
|
1095
|
-
<h3>Downgrading AMPS Data Files<a class="headerlink" href="#downgrading-amps-data-files" title="Permalink to this headline">¶</a></h3>
|
|
1096
|
-
<p>The contents of AMPS data files, including SOW topic files, transaction
|
|
1097
|
-
log journals, and the statistics database are not guaranteed to
|
|
1098
|
-
be backward compatible for versions that change the major, minor,
|
|
1099
|
-
or preview version numbers.</p>
|
|
1100
|
-
<p>Even when the file format is compatible, newer versions of AMPS may
|
|
1101
|
-
include new options or use metadata in a way that older versions
|
|
1102
|
-
of AMPS are not aware of. Downgrading an instance of AMPS
|
|
1103
|
-
while preserving data files may produce unexpected or
|
|
1104
|
-
incorrect behavior.</p>
|
|
1105
|
-
</div>
|
|
1106
|
-
</div>
|
|
1107
|
-
<div class="section" id="best-practices">
|
|
1108
|
-
<span id="operations-and-deployment-best-practices"></span><h2>Best Practices<a class="headerlink" href="#best-practices" title="Permalink to this headline">¶</a></h2>
|
|
1109
|
-
<p>This section covers a selection of best practices for deploying AMPS.</p>
|
|
1110
|
-
<div class="section" id="monitoring">
|
|
1111
|
-
<span id="operations-and-deployment-best-practices-monitoring"></span><h3>Monitoring<a class="headerlink" href="#monitoring" title="Permalink to this headline">¶</a></h3>
|
|
1112
|
-
<p>AMPS exposes the statistics available for monitoring via a RESTful
|
|
1113
|
-
interface, known as the <a class="reference internal" href="monitoring.html#ug-monitoring"><span class="std std-ref">Monitoring Interface</span></a>,
|
|
1114
|
-
which is configured as the administration port. This
|
|
1115
|
-
interface allows developers and administrators to easily inspect various
|
|
1116
|
-
aspects of AMPS performance and resource consumption using standard
|
|
1117
|
-
monitoring tools.</p>
|
|
1118
|
-
<p>At times, AMPS will emit log messages notifying that a thread has
|
|
1119
|
-
encountered a deadlock or stressful operation. These messages will
|
|
1120
|
-
repeat with the word “stuck” in them. AMPS will attempt to resolve these
|
|
1121
|
-
issues, however after 60 seconds of a single thread being stuck, AMPS
|
|
1122
|
-
will automatically emit a minidump to the previously configured minidump
|
|
1123
|
-
directory. This minidump can be used by 60East support to assist in
|
|
1124
|
-
troubleshooting the location of the stuck thread or the stressful
|
|
1125
|
-
process.</p>
|
|
1126
|
-
<p>Monitor the contents of <code class="docutils literal"><span class="pre">dmesg</span></code> on the instance for errors that
|
|
1127
|
-
affect the AMPS process. For example, if the operating system runs low on
|
|
1128
|
-
memory and begins shutting down processes, this information will be
|
|
1129
|
-
recorded in <code class="docutils literal"><span class="pre">dmesg</span></code>. Likewise, system events such as hardware
|
|
1130
|
-
failures that can affect AMPS are most likely to be recorded in the
|
|
1131
|
-
<code class="docutils literal"><span class="pre">dmesg</span></code> output.</p>
|
|
1132
|
-
<p>Another area to examine when monitoring AMPS is the <code class="docutils literal"><span class="pre">last_active</span></code>
|
|
1133
|
-
monitor for the processors. This can be found in the
|
|
1134
|
-
<code class="docutils literal"><span class="pre">/amps/instance/processors/all/last_active</span></code> url in the monitoring
|
|
1135
|
-
interface. If the <code class="docutils literal"><span class="pre">last_active</span></code> value continually increases for more
|
|
1136
|
-
than one minute and there is a noticeable decline in the quality of
|
|
1137
|
-
service, then it may be best to fail-over and restart the AMPS instance.</p>
|
|
1138
|
-
</div>
|
|
1139
|
-
<div class="section" id="logging">
|
|
1140
|
-
<h3>Logging<a class="headerlink" href="#logging" title="Permalink to this headline">¶</a></h3>
|
|
1141
|
-
<p>60East recommends that an instance of AMPS used for production
|
|
1142
|
-
log at <code class="docutils literal"><span class="pre">info</span></code> level (at a minimum). This provides a basic record
|
|
1143
|
-
of the operations requested in AMPS, and is the minimum level of
|
|
1144
|
-
logging needed to troubleshoot most issues. Further, a production
|
|
1145
|
-
instance should have the capacity available to log at a more verbose level
|
|
1146
|
-
if necessary, for troubleshooting and diagnostic purposes.</p>
|
|
1147
|
-
<p>An instance used for development or UAT purposes should typically
|
|
1148
|
-
log at <code class="docutils literal"><span class="pre">trace</span></code> level so that the interaction between an application
|
|
1149
|
-
and AMPS is captured.</p>
|
|
1150
|
-
<p>60East also recommends capturing stdout and stderr for the AMPS
|
|
1151
|
-
process. This can provide information about operating system or
|
|
1152
|
-
runtime errors in the event that a problem occurs outside of
|
|
1153
|
-
the control of AMPS (and, therefore, cannot be recorded in the
|
|
1154
|
-
AMPS event log).</p>
|
|
1155
|
-
</div>
|
|
1156
|
-
<div class="section" id="stopping-amps">
|
|
1157
|
-
<h3>Stopping AMPS<a class="headerlink" href="#stopping-amps" title="Permalink to this headline">¶</a></h3>
|
|
1158
|
-
<p>To stop AMPS, ensure that AMPS runs the <code class="docutils literal"><span class="pre">amps-action-do-shutdown</span></code>
|
|
1159
|
-
action. By default, this action is run when AMPS receives <code class="docutils literal"><span class="pre">SIGHUP</span></code>,
|
|
1160
|
-
<code class="docutils literal"><span class="pre">SIGINT</span></code>, or <code class="docutils literal"><span class="pre">SIGTERM</span></code>. However, you can also configure an action to
|
|
1161
|
-
shut down AMPS in response to other conditions. For example, if your
|
|
1162
|
-
company policy is to reboot servers every Saturday night, and AMPS is
|
|
1163
|
-
not running as a system service (or daemon), you could schedule an AMPS
|
|
1164
|
-
shutdown every Saturday before the system reboot.</p>
|
|
1165
|
-
<p>When AMPS is installed to run as a system service (or daemon), AMPS
|
|
1166
|
-
installs shutdown scripts that will cleanly stop AMPS during a system
|
|
1167
|
-
shutdown or reboot.</p>
|
|
1168
|
-
</div>
|
|
1169
|
-
<div class="section" id="sow-parameters">
|
|
1170
|
-
<span id="operations-and-deployment-best-practices-sow-parameters"></span><h3>SOW Parameters<a class="headerlink" href="#sow-parameters" title="Permalink to this headline">¶</a></h3>
|
|
1171
|
-
<p>Choosing the ideal <code class="docutils literal"><span class="pre">SlabSize</span></code> for your SOW topic is a balance between
|
|
1172
|
-
the frequency of SOW expansion and storage space efficiency. A large
|
|
1173
|
-
<code class="docutils literal"><span class="pre">SlabSize</span></code> will preallocate space for records when AMPS begins writing
|
|
1174
|
-
to the SOW.</p>
|
|
1175
|
-
<p>If detailed tuning is not necessary, 60East recommends leaving the
|
|
1176
|
-
<code class="docutils literal"><span class="pre">SlabSize</span></code> at the default size if your messages are smaller than the
|
|
1177
|
-
default <code class="docutils literal"><span class="pre">SlabSize</span></code>. If your messages are larger than the default
|
|
1178
|
-
SlabSize, a good starting point for the <code class="docutils literal"><span class="pre">SlabSize</span></code> is to set it to
|
|
1179
|
-
several times the maximum message size you expect to store in the SOW.</p>
|
|
1180
|
-
<p>There are three considerations when setting the optimum <code class="docutils literal"><span class="pre">SlabSize</span></code>:</p>
|
|
1181
|
-
<ol class="arabic simple">
|
|
1182
|
-
<li>Frequency of allocations</li>
|
|
1183
|
-
<li>Overall size of the SOW</li>
|
|
1184
|
-
<li>Efficient use of space</li>
|
|
1185
|
-
</ol>
|
|
1186
|
-
<p>A <code class="docutils literal"><span class="pre">SlabSize</span></code> that is small results in frequent extensions of your SOW
|
|
1187
|
-
topic to occur. These frequent extensions can reduce throughput in a
|
|
1188
|
-
heavily loaded system, and in extreme cases can exhaust the kernel limit
|
|
1189
|
-
on the number of regions that a process can map. Increasing the
|
|
1190
|
-
<code class="docutils literal"><span class="pre">SlabSize</span></code> will reduce the number of allocations.</p>
|
|
1191
|
-
<p>When the <code class="docutils literal"><span class="pre">SlabSize</span></code> is large, then the risk of the SOW resize
|
|
1192
|
-
affecting performance is reduced. Since each slab is larger, however,
|
|
1193
|
-
there will be more space consumed if you are only storing a small number
|
|
1194
|
-
of messages: this cost will amortize as the number of messages in the
|
|
1195
|
-
SOW exceeds the <em>number of cores in the system</em> * <em>the number of
|
|
1196
|
-
messages that fit into a slab</em>.</p>
|
|
1197
|
-
<p>To most efficiently use space, set a <code class="docutils literal"><span class="pre">SlabSize</span></code> that minimizes the
|
|
1198
|
-
amount of unused space in a slab. For example, if your message sizes are
|
|
1199
|
-
average 512 bytes but can reach a maximum of 1.2 MB, one approach would
|
|
1200
|
-
be to set a <code class="docutils literal"><span class="pre">SlabSize</span></code> of 2.5MB to hold approximately 5 average-sized
|
|
1201
|
-
messages and two of the larger-sized messages. Looking at the actual
|
|
1202
|
-
distribution of message sizes in the SOW (which can be done with the
|
|
1203
|
-
<code class="docutils literal"><span class="pre">amps_sow_dump</span></code> utility) can help you determine how best to size slabs
|
|
1204
|
-
for maximum space efficiency.</p>
|
|
1205
|
-
<p>For optimizing the <code class="docutils literal"><span class="pre">SlabSize</span></code>, determine how important each aspect of
|
|
1206
|
-
SOW tuning is for your application, and adjust the configuration to
|
|
1207
|
-
balance allocation frequency, overall SOW size, and space to meet the
|
|
1208
|
-
needs of your application.</p>
|
|
1209
|
-
<p>Given AMPS is highly-parallelized, AMPS operates more efficiently when
|
|
1210
|
-
it is able to run tasks in parallel. When considering options for SlabSize,
|
|
1211
|
-
be sure that the value you choose will result in a number of slabs that is
|
|
1212
|
-
at least equal to the number of cores in the system. A SlabSize setting
|
|
1213
|
-
that results in only a few slabs could cause reduced query performance.
|
|
1214
|
-
For example, a system with a single publisher and a SlabSize large enough
|
|
1215
|
-
to hold all of the records produced by that publisher, doesn’t allow a query
|
|
1216
|
-
to be parallelized since all of the records will be in a single slab.</p>
|
|
1217
|
-
</div>
|
|
1218
|
-
<div class="section" id="slow-clients">
|
|
1219
|
-
<span id="operations-and-deployment-best-practices-slow-clients"></span><h3>Slow Clients<a class="headerlink" href="#slow-clients" title="Permalink to this headline">¶</a></h3>
|
|
1220
|
-
<p id="index-13">As described in <a class="reference internal" href="ha.html#ug-slow-client-management"><span class="std std-ref">Slow Client Management</span></a>,
|
|
1221
|
-
AMPS provides capacity limits for slow clients to reduce the memory resources
|
|
1222
|
-
consumed by slow clients. This section discusses tuning slow client handling to
|
|
1223
|
-
achieve your availability goals.</p>
|
|
1224
|
-
<div class="section" id="slow-client-offlining-for-large-result-sets">
|
|
1225
|
-
<span id="ug-ops-client-offlining"></span><span id="index-14"></span><h4>Slow Client Offlining for Large Result Sets<a class="headerlink" href="#slow-client-offlining-for-large-result-sets" title="Permalink to this headline">¶</a></h4>
|
|
1226
|
-
<p>The default settings for AMPS work well in a wide variety of
|
|
1227
|
-
applications with minimal tuning.</p>
|
|
1228
|
-
<p>If you have particularly large SOW topics and your application is
|
|
1229
|
-
disconnecting clients due to exceeding the offlining threshold when the
|
|
1230
|
-
clients are retrieving large SOW query result sets, 60East recommends the
|
|
1231
|
-
following settings as a baseline for further tuning:</p>
|
|
1232
|
-
<span id="index-15"></span><table border="1" class="docutils" id="id2">
|
|
1233
|
-
<caption><span class="caption-text"><em>Client Offline Settings for Large Result Sets</em></span><a class="headerlink" href="#id2" title="Permalink to this table">¶</a></caption>
|
|
1234
|
-
<colgroup>
|
|
1235
|
-
<col width="50%" />
|
|
1236
|
-
<col width="50%" />
|
|
1237
|
-
</colgroup>
|
|
1238
|
-
<thead valign="bottom">
|
|
1239
|
-
<tr class="row-odd"><th class="head">Parameter</th>
|
|
1240
|
-
<th class="head">Recommendation</th>
|
|
1241
|
-
</tr>
|
|
1242
|
-
</thead>
|
|
1243
|
-
<tbody valign="top">
|
|
1244
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">MessageMemoryLimit</span></code></td>
|
|
1245
|
-
<td><p class="first">This controls the maximum memory
|
|
1246
|
-
consumed by AMPS for client
|
|
1247
|
-
messages. You can increase this
|
|
1248
|
-
parameter to allow AMPS to use more
|
|
1249
|
-
memory for records. Notice, however,
|
|
1250
|
-
that memory devoted to client
|
|
1251
|
-
messages is unavailable for other
|
|
1252
|
-
purposes.</p>
|
|
1253
|
-
<p class="last"><em>Recommended starting point for
|
|
1254
|
-
tuning large result sets:</em> 10%
|
|
1255
|
-
of the system memory (for example,
|
|
1256
|
-
on a server with 128GB of memory,
|
|
1257
|
-
start with a 13GB limit).
|
|
1258
|
-
60East recommends tuning the
|
|
1259
|
-
<code class="docutils literal"><span class="pre">MessageDiskLimit</span></code> first. If
|
|
1260
|
-
necessary, increase this parameter
|
|
1261
|
-
by 1-2% at a time. Use caution with
|
|
1262
|
-
settings over 20%: devoting large
|
|
1263
|
-
amounts of memory to client messages
|
|
1264
|
-
may cause swapping and reduce,
|
|
1265
|
-
rather than increase, overall
|
|
1266
|
-
performance.</p>
|
|
1267
|
-
</td>
|
|
1268
|
-
</tr>
|
|
1269
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">MessageDiskLimit</span></code></td>
|
|
1270
|
-
<td><p class="first">The maximum amount of space to
|
|
1271
|
-
consume for offline messages.</p>
|
|
1272
|
-
<p class="last"><em>Recommended starting point for
|
|
1273
|
-
tuning large result sets:</em> average
|
|
1274
|
-
record size * number of expected
|
|
1275
|
-
records * number of simultaneous
|
|
1276
|
-
clients, or <code class="docutils literal"><span class="pre">MessageMemoryLimit</span></code>,
|
|
1277
|
-
whichever is greater.</p>
|
|
1278
|
-
</td>
|
|
1279
|
-
</tr>
|
|
1280
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">MessageDiskPath</span></code></td>
|
|
1281
|
-
<td><p class="first">The path in which to store offline
|
|
1282
|
-
message files.</p>
|
|
1283
|
-
<p class="last">60East recommends that the message
|
|
1284
|
-
disk path be hosted on fast,
|
|
1285
|
-
high-capacity storage such as a
|
|
1286
|
-
PCIe-attached flash drive. The
|
|
1287
|
-
available storage capacity of the
|
|
1288
|
-
disk must be greater than the
|
|
1289
|
-
configured <code class="docutils literal"><span class="pre">MessageDiskLimit</span></code>. Pay
|
|
1290
|
-
attention to the performance
|
|
1291
|
-
characteristics of the device: for
|
|
1292
|
-
example, some devices suffer reduced
|
|
1293
|
-
performance when they run low on
|
|
1294
|
-
free space, so for those devices you
|
|
1295
|
-
would want to make sure that there
|
|
1296
|
-
is space available on the device
|
|
1297
|
-
even when AMPS is close to the
|
|
1298
|
-
<code class="docutils literal"><span class="pre">MessageDiskLimit</span></code>.</p>
|
|
1299
|
-
</td>
|
|
1300
|
-
</tr>
|
|
1301
|
-
</tbody>
|
|
1302
|
-
</table>
|
|
1303
|
-
<p>60East recommends that you use these settings as a baseline for further
|
|
1304
|
-
tuning, bearing in mind the needs and expected messaging patterns of
|
|
1305
|
-
your application.</p>
|
|
1306
|
-
</div>
|
|
1307
|
-
<div class="section" id="wan-traffic-and-slow-client-settings">
|
|
1308
|
-
<span id="index-16"></span><h4>WAN Traffic and Slow Client Settings<a class="headerlink" href="#wan-traffic-and-slow-client-settings" title="Permalink to this headline">¶</a></h4>
|
|
1309
|
-
<p>In some installations, a single AMPS instance will serve both
|
|
1310
|
-
applications that are local to the instance and applications
|
|
1311
|
-
that retrieve data over a higher-latency network. For example,
|
|
1312
|
-
applications in a small regional office may use a server
|
|
1313
|
-
in another region over a WAN.</p>
|
|
1314
|
-
<p>In these situations, consider either adjusting the slow
|
|
1315
|
-
client settings so that those clients can complete operations
|
|
1316
|
-
such as large SOW queries successfully, or consider creating
|
|
1317
|
-
a separate transport with higher capacity settings that will
|
|
1318
|
-
be used <em>only</em> by the small number of clients that require
|
|
1319
|
-
these settings due to network limitations. In particular,
|
|
1320
|
-
if you set a <code class="docutils literal"><span class="pre">ClientMessageAgeLimit</span></code> for an instance
|
|
1321
|
-
or transport, ensure that this limit is large enough that
|
|
1322
|
-
the network can consume the results of the SOW queries
|
|
1323
|
-
that clients are expected to make within the allotted
|
|
1324
|
-
time.</p>
|
|
1325
|
-
</div>
|
|
1326
|
-
</div>
|
|
1327
|
-
<div class="section" id="minidump">
|
|
1328
|
-
<h3>Minidump<a class="headerlink" href="#minidump" title="Permalink to this headline">¶</a></h3>
|
|
1329
|
-
<p id="index-17">AMPS includes the ability to generate a minidump file, which can be used
|
|
1330
|
-
by 60East support, to help troubleshoot a problematic instance.</p>
|
|
1331
|
-
<p>The minidump captures thread state information: a snapshot of where in the
|
|
1332
|
-
source code each thread is, the call stack for each thread, and the register
|
|
1333
|
-
information for each frame of the call stack. A minidump also contains basic
|
|
1334
|
-
information about the system that AMPS was running on, such as the processor
|
|
1335
|
-
type and number of sockets. Minidumps <em>do not</em> contain other internal state
|
|
1336
|
-
of AMPS or the contents of application memory. Minidumps <em>do not</em> contain
|
|
1337
|
-
detailed information about the host system, and have no information about
|
|
1338
|
-
the state of the host or operating system. Instead, minidumps identify the
|
|
1339
|
-
point of failure to help 60East quickly narrow down the issue without
|
|
1340
|
-
generating large files or potentially compromising sensitive data.</p>
|
|
1341
|
-
<p>Minidumps can be produced much faster than a standard core dump, and use
|
|
1342
|
-
significantly less space since the minidump contains only a small subset of
|
|
1343
|
-
the information a core dump would contain (see
|
|
1344
|
-
<a class="reference internal" href="#section-operation-deployment-linux-ulimit"><span class="std std-ref">ulimit</span></a>
|
|
1345
|
-
for more configuration options). Because minidumps are relatively
|
|
1346
|
-
inexpensive, the AMPS server may produce minidumps for temporary conditions
|
|
1347
|
-
that the server subsequently recovers from. AMPS also allows creation of
|
|
1348
|
-
a minidump on demand.</p>
|
|
1349
|
-
<p>Generation of a minidump file occurs in the following ways:</p>
|
|
1350
|
-
<ol class="arabic simple">
|
|
1351
|
-
<li>When AMPS detects a crash internally, a minidump file will
|
|
1352
|
-
automatically be generated. This includes cases where an AMPS
|
|
1353
|
-
thread or critical internal component has not reported progress for an
|
|
1354
|
-
extended period of time (typically 300 seconds).</li>
|
|
1355
|
-
<li>When a user clicks on the <code class="docutils literal"><span class="pre">minidump</span></code> link in the
|
|
1356
|
-
<code class="docutils literal"><span class="pre">amps/instance/administrator</span></code> link from the administrator console
|
|
1357
|
-
(see the <em>AMPS Monitoring Reference</em> for more information).</li>
|
|
1358
|
-
<li>By sending the running AMPS process the <code class="docutils literal"><span class="pre">SIGQUIT</span></code> signal.</li>
|
|
1359
|
-
<li>In response to a configured action.</li>
|
|
1360
|
-
<li>If a thread fails to report progress with the AMPS thread monitor for
|
|
1361
|
-
approximately 60 seconds, a minidump will automatically be generated.
|
|
1362
|
-
This should be sent to AMPS support for evaluation along with a
|
|
1363
|
-
description of the operations taking place at the time (typically,
|
|
1364
|
-
info level or more verbose logging).</li>
|
|
1365
|
-
</ol>
|
|
1366
|
-
<p>By default the minidump is configured to write to <code class="docutils literal"><span class="pre">/tmp</span></code>, but this can be
|
|
1367
|
-
changed in the AMPS configuration by modifying the <code class="docutils literal"><span class="pre">MiniDumpDirectory</span></code>.
|
|
1368
|
-
60East recommends monitoring the minidump directory.</p>
|
|
1369
|
-
<p>If minidumps occur, contact 60East support for diagnosis and troubleshooting.
|
|
1370
|
-
Bear in mind that minidumps are often a symptom of a slowdown in the server
|
|
1371
|
-
due to resource constraints rather than an indication that the server has
|
|
1372
|
-
exited.</p>
|
|
1373
|
-
<p>Once a minidump is submitted to 60East (and acknowledged as received), there
|
|
1374
|
-
is no further need to retain that minidump. 60East recommends removing
|
|
1375
|
-
minidumps when they are no longer needed.</p>
|
|
1376
|
-
</div>
|
|
1377
|
-
<div class="section" id="deployment-and-upgrade-plan">
|
|
1378
|
-
<span id="index-18"></span><h3>Deployment and Upgrade Plan<a class="headerlink" href="#deployment-and-upgrade-plan" title="Permalink to this headline">¶</a></h3>
|
|
1379
|
-
<p>60East offers a deployment checklist for use when planning or upgrading
|
|
1380
|
-
an installation of AMPS. The checklist covers recommendations for
|
|
1381
|
-
operations considerations such as:</p>
|
|
1382
|
-
<ul class="simple">
|
|
1383
|
-
<li>Capacity Planning</li>
|
|
1384
|
-
<li>Operating System Configuration</li>
|
|
1385
|
-
<li>AMPS Configuration</li>
|
|
1386
|
-
<li>Developing and Configuring Maintenance Plans</li>
|
|
1387
|
-
<li>Creating a Monitoring Strategy</li>
|
|
1388
|
-
<li>Creating a Patching and Upgrade Plan</li>
|
|
1389
|
-
<li>Creating a Support Plan and Verifying the Support Process</li>
|
|
1390
|
-
</ul>
|
|
1391
|
-
<p>The checklist may not cover all aspects of deployment in a particular
|
|
1392
|
-
environment, but can be used to create a checklist and deployment plan
|
|
1393
|
-
for your environment.</p>
|
|
1394
|
-
</div>
|
|
1395
|
-
</div>
|
|
1396
|
-
<div class="section" id="accessing-amps-through-a-proxy">
|
|
1397
|
-
<span id="section-proxy"></span><h2>Accessing AMPS Through a Proxy<a class="headerlink" href="#accessing-amps-through-a-proxy" title="Permalink to this headline">¶</a></h2>
|
|
1398
|
-
<p id="index-19">For some installations, it is important to be able
|
|
1399
|
-
to configure access to an AMPS instance through a proxy
|
|
1400
|
-
server.</p>
|
|
1401
|
-
<p>AMPS client connections and AMPS replication connections
|
|
1402
|
-
are TCP connections that use a custom protocol to communicate.
|
|
1403
|
-
Any proxy that does not alter the content of packets will
|
|
1404
|
-
work as expected for both client connections and replication
|
|
1405
|
-
connections.</p>
|
|
1406
|
-
<p>Using a proxy with AMPS is most straightforward when there
|
|
1407
|
-
is a one-to-one relationship between a port on the proxy
|
|
1408
|
-
and a port on the AMPS instance. In many cases, though,
|
|
1409
|
-
it is useful to have a single port on the proxy and then
|
|
1410
|
-
to route to a different backend instance of AMPS.</p>
|
|
1411
|
-
<div class="section" id="websocket-connections">
|
|
1412
|
-
<h3>Websocket Connections<a class="headerlink" href="#websocket-connections" title="Permalink to this headline">¶</a></h3>
|
|
1413
|
-
<p>Current versions of the AMPS javascript client support
|
|
1414
|
-
the ability to insert arbitrary paths between the hostname
|
|
1415
|
-
and port and the protocol and message type components of the
|
|
1416
|
-
AMPS connection URI.</p>
|
|
1417
|
-
<p>For example, a URI of <code class="docutils literal"><span class="pre">ws://proxyhost:8080/amps-prod-system/amps/json</span></code>
|
|
1418
|
-
could be used by the proxy to route to the system designated
|
|
1419
|
-
<code class="docutils literal"><span class="pre">amps-prod-system</span></code>.</p>
|
|
1420
|
-
</div>
|
|
1421
|
-
<div class="section" id="galvanometer-connections">
|
|
1422
|
-
<h3>Galvanometer Connections<a class="headerlink" href="#galvanometer-connections" title="Permalink to this headline">¶</a></h3>
|
|
1423
|
-
<p>The Galvanometer relies on the path provided to determine
|
|
1424
|
-
which resource to return. If it’s necessary to proxy
|
|
1425
|
-
multiple systems behind a single port, it is typically
|
|
1426
|
-
most useful to have the proxy rewrite the URI when
|
|
1427
|
-
forwarding the request. For example, the proxy could
|
|
1428
|
-
rewrite a request for <code class="docutils literal"><span class="pre">http://proxyhost:8085/prod-system/</span></code>
|
|
1429
|
-
to <code class="docutils literal"><span class="pre">http://amps-prod-system:8085/</span></code>.</p>
|
|
1430
|
-
<p>For example, an NGINX proxy configuration could be
|
|
1431
|
-
implemented along the lines of:</p>
|
|
1432
|
-
<div class="highlight-bash"><div class="highlight"><pre><span></span>server <span class="o">{</span>
|
|
1433
|
-
listen <span class="m">8085</span> default<span class="p">;</span>
|
|
1434
|
-
listen <span class="o">[</span>::<span class="o">]</span>:8085<span class="p">;</span>
|
|
1435
|
-
|
|
1436
|
-
server_name AMPS<span class="p">;</span>
|
|
1437
|
-
|
|
1438
|
-
<span class="c1"># server context</span>
|
|
1439
|
-
location /amps-prod-system/ <span class="o">{</span>
|
|
1440
|
-
proxy_set_header X-Forwarded-Host <span class="nv">$host</span><span class="p">;</span>
|
|
1441
|
-
proxy_set_header X-Forwarded-Server <span class="nv">$host</span><span class="p">;</span>
|
|
1442
|
-
proxy_set_header X-Forwarded-For <span class="nv">$proxy_add_x_forwarded_for</span><span class="p">;</span>
|
|
1443
|
-
proxy_pass http://amps-prod-system:8085/<span class="p">;</span> <span class="c1">#hostname and port of AMPS host for first AMPS instance</span>
|
|
1444
|
-
<span class="o">}</span>
|
|
1445
|
-
location /amps-dev-system/ <span class="o">{</span>
|
|
1446
|
-
proxy_set_header X-Forwarded-Host <span class="nv">$host</span><span class="p">;</span>
|
|
1447
|
-
proxy_set_header X-Forwarded-Server <span class="nv">$host</span><span class="p">;</span>
|
|
1448
|
-
proxy_set_header X-Forwarded-For <span class="nv">$proxy_add_x_forwarded_for</span><span class="p">;</span>
|
|
1449
|
-
proxy_pass http://amps-dev-system:8085/<span class="p">;</span> <span class="c1">#hostname and port of AMPS host for second AMPS instance</span>
|
|
1450
|
-
<span class="o">}</span>
|
|
1451
|
-
<span class="o">}</span>
|
|
1452
|
-
</pre></div>
|
|
1453
|
-
</div>
|
|
1454
|
-
<p>Notice that Galvanometer may not be able to provide
|
|
1455
|
-
information on replicated instances when Galvanometer is
|
|
1456
|
-
accessed through a proxy. Galvanometer relies on the hostnames
|
|
1457
|
-
provided by the AMPS configuration to locate replicated instances
|
|
1458
|
-
and retrieve information from their admin interfaces. If Galvanometer
|
|
1459
|
-
does not have access to the replicated instances at the hostname or
|
|
1460
|
-
IP provided in the AMPS configuration file, it will not be able
|
|
1461
|
-
to display information about replicated instances. This does not
|
|
1462
|
-
indicate an issue with replication on those instances, it just
|
|
1463
|
-
means that the Galvanometer view (which is constructed by
|
|
1464
|
-
Galvanometer in the browser) cannot provide the information.</p>
|
|
1465
|
-
</div>
|
|
1466
|
-
<div class="section" id="load-balancing-considerations">
|
|
1467
|
-
<h3>Load-Balancing Considerations<a class="headerlink" href="#load-balancing-considerations" title="Permalink to this headline">¶</a></h3>
|
|
1468
|
-
<p>Some proxy systems are also intended to implement load-balancing.
|
|
1469
|
-
The approach that a given installation uses to determine how
|
|
1470
|
-
to distribute connections depends on the resource that the load-balancing
|
|
1471
|
-
system is managing, and the needs of the application. For example,
|
|
1472
|
-
an application where all subscribers produce roughly the same amount
|
|
1473
|
-
of traffic could use a simple round-robin load balancing system to
|
|
1474
|
-
distribute network load. On the other hand, a proxy for an application
|
|
1475
|
-
where subscribers execute complex aggregated subscriptions might
|
|
1476
|
-
monitor CPU load or memory consumption on a set of servers that host
|
|
1477
|
-
AMPS and attempt to route a new connection to the server with the
|
|
1478
|
-
lowest current load.</p>
|
|
1479
|
-
<p>Regardless of the approach used, it is important to keep in
|
|
1480
|
-
mind that, for a publisher or queue consumer, the same
|
|
1481
|
-
considerations for the proxy apply as would apply for
|
|
1482
|
-
specifying failover equivalents to a client application
|
|
1483
|
-
directly. In particular, a publisher or a subscriber that
|
|
1484
|
-
processes a queue should not fail over across a replication
|
|
1485
|
-
connection that uses asynchronous acknowledgment (or a
|
|
1486
|
-
connection that has been downgraded to be asynchronous). If
|
|
1487
|
-
this happens, there is a possibility of message loss and/or
|
|
1488
|
-
inconsistent transaction log contents.
|
|
1489
|
-
See the discussion of synchronous and asynchronous acknowledgment in
|
|
1490
|
-
<a class="reference internal" href="replication.html#replication-sync-vs-async"><span class="std std-ref">Sync vs Async Acknowledgment Types</span></a>
|
|
1491
|
-
for more details.</p>
|
|
1492
|
-
</div>
|
|
1493
|
-
</div>
|
|
1494
|
-
</div>
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
</div>
|
|
1498
|
-
</div>
|
|
1499
|
-
</div>
|
|
1500
|
-
<div class="clearer"></div>
|
|
1501
|
-
</div>
|
|
1502
|
-
<div class="footer">
|
|
1503
|
-
©2023 60East Technologies, Inc. (version develop).
|
|
1504
|
-
|
|
1505
|
-
|
|
|
1506
|
-
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.5.3</a>
|
|
1507
|
-
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.10</a>
|
|
1508
|
-
|
|
1509
|
-
</div>
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
</body>
|
|
1515
|
-
</html>
|