簡體   English   中英

Cassandra分頁CPU使用率問題

[英]Cassandra Pagination CPU Utilization Issue

我已經開發了用於提取數據的python腳本,但是它僅使用單個cpu核心,當我這樣做時,頂級cassandra使用的是200%以上的cpu。 由於在兩次GC之間進入圖片,因此進入了空閑狀態無法理解如何轉換代碼以利用多核和並行處理。

class PagedResultHandler(object):

def __init__(self, future):
    self.error = None
    self.finished_event = multiprocessing.Event()
    self.future = future
    self.future.add_callbacks(
        callback=self.handle_page,
        errback=self.handle_error)
    self.rows = []
def handle_page(self, rows):
    self.rows += rows

    if self.future.has_more_pages:
        self.future.start_fetching_next_page()
    else:
        self.finished_event.set()

def handle_error(self, exc):
    self.error = exc
    self.finished_event.set()
start_time = time.time()
cluster = Cluster(contact_points=['127.0.0.1'],protocol_version=4)
session = cluster.connect('unit_test')
query = "select * from "+table_name+" where runseq=0"   
print("--Fired Query--->> ", query)
future = session.execute_async(query)
handler = PagedResultHandler(future) 
handler.finished_event.wait()
data = pd.DataFrame(handler.rows)
print("--- %s seconds ---" % (time.time() - start_time))
if handler.error:
  raise handler.error
cluster.shutdown()

我拉的每個表包含超過300萬行,並且存在很多性能問題。 我可以幫助我如何制作CPU核心並提高性能

您不會從python驅動程序獲得出色的性能,但是如果您確實想查看cqlsh的復制功能( https://github.com/apache/cassandra/blob/trunk/pylib/cqlshlib/copyutil.py#L229 )看到可以使用多個內核的快速實現。

在C *端,請確保您有足夠的節點以及足夠的硬件(ssds,多核,> 16gb的ram)。 如果使用sub 8gb堆等,不要期望太多。 Cassandra / JVM(具有默認設置)旨在充分利用服務器,而不共享資源,因此期望有較高的CPU。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM