0

我正在使用 3 个节点作为 POC 测试 Cassandra 4.0,所有节点都使用具有 8GB RAM 和 2 个内核的 VM。虚拟机的创建方式确保它们不共享 I/O。

我启动了第一个节点,客户端中有 50 个线程,插入 150,000 条记录需要 7 秒(无批处理)。所以写入速度是22k/sec。然后我添加了第二个节点,并启动了另一个客户端(与第一个客户端同时写入不同的表),具有 50 个线程,同时插入 150k 条记录,两个客户端需要 18 秒才能完成,因此写入速度变为 16k/秒. 最后,我添加了第 3 个节点,使用 2 个客户端,插入 300k 条记录需要 27 秒,因此写入速度变为 11k/秒。显然,写入速度随着添加更多节点而降低。

我检查了 CPU 使用率,它在 70~80% 左右。

以下是“nodetool status”的结果:

Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address      Load      Tokens  Owns  Host ID                               Rack 
UN  10.30.1.1  1.65 GiB  16      ?     4d379ca0-362b-4077-b650-c589088e86ed  rack1
UN  10.30.1.2  3.1 GiB   16      ?     b0d37f83-dfaf-45ae-9749-25f2d6746d0e  rack1
UN  10.30.1.3  2.7 GiB   16      ?     8a48959b-a2a4-4543-abbf-257ddb7ca5b1  rack1

结果来自“nodetool tpstats”:

Pool Name                    Active Pending Completed Blocked All time blocked
RequestResponseStage         0      0       1615905   0       0               
MutationStage                0      0       2090208   0       0               
ReadStage                    0      0       1466      0       0               
CompactionExecutor           0      0       1239      0       0               
MemtableReclaimMemory        0      0       6         0       0               
PendingRangeCalculator       0      0       4         0       0               
GossipStage                  0      0       7695      0       0               
SecondaryIndexManagement     0      0       0         0       0               
HintsDispatcher              0      0       0         0       0               
MemtablePostFlush            0      0       11        0       0               
PerDiskMemtableFlushWriter_0 0      0       6         0       0               
ValidationExecutor           0      0       0         0       0               
Sampler                      0      0       0         0       0               
ViewBuildExecutor            0      0       0         0       0               
MemtableFlushWriter          0      0       6         0       0               
CacheCleanupExecutor         0      0       0         0       0               
Native-Transport-Requests    0      0       2202576   0       0               

Latencies waiting in queue (micros) per dropped message types
Message type           Dropped     50%               95%       99%                Max               
READ_RSP               0           0.0               0.0       0.0                0.0               
RANGE_REQ              0           0.0               0.0       0.0                0.0               
PING_REQ               0           0.0               0.0       0.0                0.0               
_SAMPLE                0           0.0               0.0       0.0                0.0               
VALIDATION_RSP         0           0.0               0.0       0.0                0.0               
SCHEMA_PULL_RSP        0           0.0               0.0       0.0                0.0               
SYNC_RSP               0           0.0               0.0       0.0                0.0               
SCHEMA_VERSION_REQ     0           0.0               0.0       0.0                0.0               
HINT_RSP               0           0.0               0.0       0.0                0.0               
BATCH_REMOVE_RSP       0           0.0               0.0       0.0                0.0               
PAXOS_COMMIT_REQ       0           0.0               0.0       0.0                0.0               
SNAPSHOT_RSP           0           0.0               0.0       0.0                0.0               
COUNTER_MUTATION_REQ   0           0.0               0.0       0.0                0.0               
GOSSIP_DIGEST_SYN      0           943.1270000000001 1955.666  2816.159           2816.159          
PAXOS_PREPARE_REQ      0           0.0               0.0       0.0                0.0               
PREPARE_MSG            0           0.0               0.0       0.0                0.0               
PAXOS_COMMIT_RSP       0           0.0               0.0       0.0                0.0               
HINT_REQ               0           0.0               0.0       0.0                0.0               
BATCH_REMOVE_REQ       0           0.0               0.0       0.0                0.0               
STATUS_RSP             0           0.0               0.0       0.0                0.0               
READ_REPAIR_RSP        0           0.0               0.0       0.0                0.0               
GOSSIP_DIGEST_ACK2     0           654.9490000000001 3379.391  4055.2690000000002 4055.2690000000002
CLEANUP_MSG            0           0.0               0.0       0.0                0.0               
REQUEST_RSP            0           0.0               0.0       0.0                0.0               
TRUNCATE_RSP           0           0.0               0.0       0.0                0.0               
UNUSED_CUSTOM_VERB     0           0.0               0.0       0.0                0.0               
REPLICATION_DONE_RSP   0           0.0               0.0       0.0                0.0               
SNAPSHOT_REQ           0           0.0               0.0       0.0                0.0               
ECHO_REQ               0           0.0               0.0       0.0                0.0               
PREPARE_CONSISTENT_REQ 0           0.0               0.0       0.0                0.0               
FAILURE_RSP            0           0.0               0.0       0.0                0.0               
BATCH_STORE_RSP        0           0.0               0.0       0.0                0.0               
SCHEMA_PUSH_RSP        0           0.0               0.0       0.0                0.0               
MUTATION_RSP           0           2816.159          10090.808 17436.917          89970.66          
FINALIZE_PROPOSE_MSG   0           0.0               0.0       0.0                0.0               
ECHO_RSP               0           0.0               0.0       0.0                0.0               
INTERNAL_RSP           0           0.0               0.0       0.0                0.0               
FAILED_SESSION_MSG     0           0.0               0.0       0.0                0.0               
_TRACE                 0           0.0               0.0       0.0                0.0               
SCHEMA_VERSION_RSP     0           0.0               0.0       0.0                0.0               
FINALIZE_COMMIT_MSG    0           0.0               0.0       0.0                0.0               
SNAPSHOT_MSG           0           0.0               0.0       0.0                0.0               
PREPARE_CONSISTENT_RSP 0           0.0               0.0       0.0                0.0               
PAXOS_PROPOSE_REQ      0           0.0               0.0       0.0                0.0               
PAXOS_PREPARE_RSP      0           0.0               0.0       0.0                0.0               
MUTATION_REQ           0           2346.799          10090.808 17436.917          74975.55          
READ_REQ               0           0.0               0.0       0.0                0.0               
PING_RSP               0           0.0               0.0       0.0                0.0               
RANGE_RSP              0           0.0               0.0       0.0                0.0               
VALIDATION_REQ         0           0.0               0.0       0.0                0.0               
SYNC_REQ               0           0.0               0.0       0.0                0.0               
_TEST_1                0           0.0               0.0       0.0                0.0               
GOSSIP_SHUTDOWN        0           0.0               0.0       0.0                0.0               
TRUNCATE_REQ           0           0.0               0.0       0.0                0.0               
_TEST_2                0           0.0               0.0       0.0                0.0               
GOSSIP_DIGEST_ACK      0           785.939           2346.799  14530.764000000001 14530.764000000001
SCHEMA_PUSH_REQ        0           0.0               0.0       0.0                0.0               
FINALIZE_PROMISE_MSG   0           0.0               0.0       0.0                0.0               
BATCH_STORE_REQ        0           0.0               0.0       0.0                0.0               
COUNTER_MUTATION_RSP   0           0.0               0.0       0.0                0.0               
REPAIR_RSP             0           0.0               0.0       0.0                0.0               
STATUS_REQ             0           0.0               0.0       0.0                0.0               
SCHEMA_PULL_REQ        0           0.0               0.0       0.0                0.0               
READ_REPAIR_REQ        0           0.0               0.0       0.0                0.0               
REPLICATION_DONE_REQ   0           0.0               0.0       0.0                0.0               
PAXOS_PROPOSE_RSP      0           0.0               0.0       0.0                0.0

创建的表:

create keyspace example with replication = { 'class' : 'SimpleStrategy', 'replication_factor' : 2 };
create table example.tweet(timeline text, id UUID, text text, PRIMARY KEY(id));

和客户端代码:

package main

import (
        "fmt"
        "strconv"
        "github.com/gocql/gocql"
        "time"
        "sync"
)

const (
  gophers = 50
  entries = 3000
)

func main() {
        var wg sync.WaitGroup
        start_time:=time.Now().UnixNano()
        for i :=0 ; i < gophers; i++ {
                wg.Add(1)
                // spin up a gopher
                go gopher(i, &wg)
        }

        wg.Wait()
       end_time := time.Now().UnixNano()

   total_time := (end_time - start_time)/1000000

   fmt.Println("total spent time: ", strconv.FormatInt(total_time, 10))
}


func gopher (thread_id int, wg *sync.WaitGroup) {
        defer wg.Done()
        cluster := gocql.NewCluster("10.30.1.1","10.30.1.2","10.30.1.3")
        cluster.ConnectTimeout = time.Second*30
        cluster.DisableInitialHostLookup=true
        cluster.Timeout = 25*time.Second
        cluster.Consistency = gocql.LocalQuorum
        cluster.Keyspace = "example"
        session, err := cluster.CreateSession()
        if err != nil {
                panic(err)
        }

        defer session.Close()

        stmt:= session.Query("INSERT INTO tweet (timeline, id, text) VALUES (?, ?, ?)")

        fmt.Println("StartTime: ", time.Now())
        for i:=0; i < entries; i ++ {
                _=stmt.Bind("me", gocql.TimeUUID(), "Hello"+strconv.Itoa(i)).Exec()
        }
        fmt.Println("EndTime:", time.Now())
}

我想知道是否有人可以给我一些关于我还能寻找什么的建议?

4

1 回答 1

0

如果您在同一物理主机上运行所有 3 个虚拟机,那么这将使您的测试无效,因为这 3 个虚拟机正在竞争相同的物理资源。

为了使测试有效,您应该将每个 VM 托管在单独的物理主机上。干杯!

于 2021-08-04T03:09:12.153 回答