Guest User

Untitled

a guest
Feb 24th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.49 KB | None | 0 0
  1. ```
  2. This document goes over Cattle executor services, their use and its thread pools configurations.
  3. 1) Core executor service
  4. Default executor service. Examples of use:
  5. * API requests dispatching
  6. * Agent events execution (example: sending agent.ping, replying to agent.ping)
  7. * Reporting resource state.change events to subscribers (UI is an example of such subscriber)
  8. Thread pool settings (configurable):
  9. =====================================
  10. pool.coreexecutorservice.core.size=15
  11. pool.coreexecutorservice.max.size=15
  12. pool.coreexecutorservice.keep.alive=120
  13. pool.coreexecutorservice.queue.size=-1 (infinite)
  14. 2) Event executor service
  15. Used for:
  16. * Events dispatching. Example: agent.ping event gets dispatched by this service, and then forwarded for execution to Core executor service.
  17. Thread pool settings (configurable):
  18. =====================================
  19. pool.eventexecutorservice.core.size=5
  20. pool.eventexecutorservice.max.size=5
  21. pool.eventexecutorservice.keep.alive=120
  22. pool.eventexecutorservice.queue.size=-1 (infinite)
  23. 3) ScheduledThreadPool executor service
  24. Used for schedulable periodic tasks like:
  25. * config updates publishing
  26. * purging removed resources
  27. * cleaning up purged data from the database
  28. Thread pool settings (not configurable):
  29. =====================================
  30. core.size=10
  31. max.size=10
  32. keep.alive=120
  33. queue.size=-1 (infinite)
  34. 4) Process thread pools executor services
  35. The pools below used for process executions for cattle resources (examples: service.activate, instance.create, host.activate, etc)
  36. 4.1) ProcessEvent executor service
  37. Default executor having 0 queue size. Once the thread count reaches max.size (10), the process gets rejected and delegated to one of 4.2-4.5 executors
  38. Thread pool settings (configurable):
  39. =====================================
  40. pool.processeventexecutorservice.core.size=3
  41. pool.processeventexecutorservice.max.size=10
  42. pool.processeventexecutorservice.keep.alive=120
  43. pool.processeventexecutorservice.queue.size=0
  44. 4.2) ProcessNonBlocking executor service
  45. Handles processes which are:
  46. * not blocked waiting on other processes completion
  47. * do not require any backend operations
  48. Example: project.activate, serviceIndex.create
  49. Thread pool settings (configurable):
  50. =====================================
  51. pool.processnonblockingexecutorservice.core.size=3
  52. pool.processnonblockingexecutorservice.max.size=5
  53. pool.processnonblockingexecutorservice.keep.alive=1200
  54. pool.processnonblockingexecutorservice.queue.size=1000
  55. pool.processnonblockingexecutorservice.priority.queue=true
  56. 4.3) ProcessBlocking executor service
  57. Used by processes than can be blocked either waiting for other processes to finish, or backend calls to complete. Example: instance.start waiting for container being started on the docker host.
  58. Following resources' operations are blocking:
  59. * containerevent
  60. * instance
  61. * volumestoragepool
  62. * agent
  63. * host
  64. Thread pool settings (configurable):
  65. =====================================
  66. pool.processblockingexecutorservice.core.size=15
  67. pool.processblockingexecutorservice.max.size=35
  68. pool.processblockingexecutorservice.keep.alive=1200
  69. pool.processblockingexecutorservice.queue.size=1000
  70. pool.processblockingexecutorservice.priority.queue=true
  71. 4.4) ProcessBlockingExtra executor service
  72. Handles services' processes (service.update, service.activate). The reason services get dedicated thread pool is - their processes can be blocked for a prolonged time by waiting on instance.create/instance.start to finish.
  73. Example: service.activate doesn't finish till all instances in the service are Running.
  74. Thread pool settings (configurable):
  75. =====================================
  76. pool.processblockingextraexecutorservice.core.size=15
  77. pool.processblockingextraexecutorservice.max.size=35
  78. pool.processblockingextraexecutorservice.keep.alive=1200
  79. pool.processblockingextraexecutorservice.queue.size=1000
  80. pool.processblockingextraexecutorservice.priority.queue=true
  81. 4.5) ProcessBlockingSystem executor service
  82. Dedicated to handling processes for system containers. Example: ipsec container start.
  83. Having a dedicated thread pool will ensure that the system containers operations are prioritized, and regular instances starts won't fail because ipsec container hasn't been started yet.
  84. Thread pool settings (configurable):
  85. =====================================
  86. pool.processblockingsystemexecutorservice.core.size=15
  87. pool.processblockingsystemexecutorservice.max.size=35
  88. pool.processblockingsystemexecutorservice.keep.alive=1200
  89. pool.processblockingsystemexecutorservice.queue.size=1000
  90. pool.processblockingsystemexecutorservice.priority.queue=true
  91.  
  92. ```
Add Comment
Please, Sign In to add comment