我看到我的Linux实例卡桑德拉java程序,它使用〜内存38GB和表演〜700个线程在它之下。
更新 - @克里斯 - 这里是tpstats的输出
[username@hostname ~]$ nodetool tpstats
Pool Name Active Pending Completed Blocked All time blocked
ReadStage 0 0 110336013 0 0
ContinuousPagingStage 0 0 31 0 0
MiscStage 0 0 0 0 0
CompactionExecutor 0 0 4244757 0 0
MutationStage 0 0 25309020 0 0
GossipStage 0 0 2484700 0 0
RequestResponseStage 0 0 46705216 0 0
ReadRepairStage 0 0 2193356 0 0
CounterMutationStage 0 0 3563130 0 0
MemtablePostFlush 0 0 117717 0 0
ValidationExecutor 1 1 111176 0 0
MemtableFlushWriter 0 0 23843 0 0
ViewMutationStage 0 0 0 0 0
CacheCleanupExecutor 0 0 0 0 0
Repair#1953 1 3 1 0 0
MemtableReclaimMemory 0 0 28251 0 0
PendingRangeCalculator 0 0 6 0 0
AntiCompactionExecutor 0 0 0 0 0
SecondaryIndexManagement 0 0 0 0 0
HintsDispatcher 0 0 29 0 0
Native-Transport-Requests 0 0 110953286 0 0
MigrationStage 0 0 19 0 0
PerDiskMemtableFlushWriter_0 0 0 27853 0 0
Sampler 0 0 0 0 0
InternalResponseStage 0 0 21264 0 0
AntiEntropyStage 0 0 350913 0 0
Message type Dropped Latency waiting in queue (micros)
50% 95% 99% Max
READ 0 0.00 0.00 0.00 10090.81
RANGE_SLICE 0 0.00 0.00 10090.81 10090.81
_TRACE 0 N/A N/A N/A N/A
HINT 0 0.00 0.00 0.00 0.00
MUTATION 0 0.00 0.00 0.00 10090.81
COUNTER_MUTATION 0 0.00 0.00 0.00 10090.81
BATCH_STORE 0 0.00 0.00 0.00 0.00
BATCH_REMOVE 0 0.00 0.00 0.00 0.00
REQUEST_RESPONSE 0 0.00 0.00 0.00 12108.97
PAGED_RANGE 0 N/A N/A N/A N/A
READ_REPAIR 0 0.00 0.00 0.00 0.00```
该连接到哪个应该有线程等于核数的网状服务,即使你有10000点连接的客户端。然而卡桑德拉最初设计为具有分阶段事件驱动架构(SEDA),其一个异步和全螺纹模型之间有点坐在。它创建线程池来处理不同类型的任务。这是否意味着但是这取决于在你的YAML的配置可以有很多线程。例如默认那里有多达128个线程的本机传输池,32层并发的读者,32名并发作家,32个计数器突变等,但如果你的集群进行了调整,为固态硬盘,这些可能会更高。考虑到这一点那里有许多这些池使用的共享池(显示为SharedWorkers)与SEPExecutor(单执行池)。因此,尖峰可能有很多,但创建线程可能不被经常使用。
nodetool tpstats
会给你的细节上不同的游泳池,有多少是活跃的,它可以帮助确定哪些,如果正在使用的线程。如果不是有那么你也可以使用jstack
(使用尽可能相同的用户卡桑德拉过程)转储的痕迹。如果其过多过孤单的工具看起来像https://fastthread.io/,使观看更方便。
对于内存它是什么值得32GB和700个线程听起来不像一个问题。