Reduce test data and add memory limits to prevent resource exhaustion

- Reduce LargeQuery test from 100K to 10K records (500-record batches)
- Reduce MultiNode concurrent operations from 50 to 30
- Add memory limits to all Docker containers in 1C1D config
- Add memory limits to all Docker containers in 3C3D config
- Addresses server resource constraints for GitHub Actions runners
- Maintains test coverage for pagination (100 fetches with fetchSize=100)
diff --git a/docker-compose-1c1d.yml b/docker-compose-1c1d.yml
index 8789b14..d72a391 100644
--- a/docker-compose-1c1d.yml
+++ b/docker-compose-1c1d.yml
@@ -36,6 +36,12 @@
       - dn_rpc_address=iotdb-datanode
       - dn_internal_address=iotdb-datanode
       - dn_seed_config_node=iotdb-confignode:10710
+    deploy:
+      resources:
+        limits:
+          memory: 1G
+        reservations:
+          memory: 512M
 
   iotdb-confignode:
     image: apache/iotdb:2.0.6-confignode
@@ -53,6 +59,12 @@
       - cn_internal_address=iotdb-confignode
       - cn_internal_port=10710
       - cn_seed_config_node=iotdb-confignode:10710
+    deploy:
+      resources:
+        limits:
+          memory: 512M
+        reservations:
+          memory: 256M
 
 networks:
   iotdb-network:
diff --git a/docker-compose-3c3d.yml b/docker-compose-3c3d.yml
index 6149d52..afdc664 100644
--- a/docker-compose-3c3d.yml
+++ b/docker-compose-3c3d.yml
@@ -38,6 +38,12 @@
       - cn_seed_config_node=iotdb-confignode-1:10710
       - schema_replication_factor=3
       - data_replication_factor=3
+    deploy:
+      resources:
+        limits:
+          memory: 384M
+        reservations:
+          memory: 192M
 
   # ConfigNode 2
   iotdb-confignode-2:
@@ -61,6 +67,12 @@
       - cn_seed_config_node=iotdb-confignode-1:10710
       - schema_replication_factor=3
       - data_replication_factor=3
+    deploy:
+      resources:
+        limits:
+          memory: 384M
+        reservations:
+          memory: 192M
 
   # ConfigNode 3
   iotdb-confignode-3:
@@ -86,6 +98,12 @@
       - cn_seed_config_node=iotdb-confignode-1:10710
       - schema_replication_factor=3
       - data_replication_factor=3
+    deploy:
+      resources:
+        limits:
+          memory: 384M
+        reservations:
+          memory: 192M
 
   # DataNode 1
   iotdb-datanode-1:
@@ -112,6 +130,12 @@
       - dn_rpc_port=6667
       - schema_replication_factor=3
       - data_replication_factor=3
+    deploy:
+      resources:
+        limits:
+          memory: 768M
+        reservations:
+          memory: 384M
 
   # DataNode 2
   iotdb-datanode-2:
@@ -140,6 +164,12 @@
       - dn_rpc_port=6667
       - schema_replication_factor=3
       - data_replication_factor=3
+    deploy:
+      resources:
+        limits:
+          memory: 768M
+        reservations:
+          memory: 384M
 
   # DataNode 3
   iotdb-datanode-3:
@@ -170,6 +200,12 @@
       - dn_rpc_port=6667
       - schema_replication_factor=3
       - data_replication_factor=3
+    deploy:
+      resources:
+        limits:
+          memory: 768M
+        reservations:
+          memory: 384M
 
 networks:
   iotdb-network:
diff --git a/tests/e2e/LargeQuery.test.ts b/tests/e2e/LargeQuery.test.ts
index 552685a..5becd93 100644
--- a/tests/e2e/LargeQuery.test.ts
+++ b/tests/e2e/LargeQuery.test.ts
@@ -83,14 +83,14 @@
     );
   });
 
-  test('Should insert large dataset (100,000 records)', async () => {
+  test('Should insert large dataset (10,000 records)', async () => {
     if (!session.isOpen()) {
       console.log('Skipping test - no IoTDB connection');
       return;
     }
 
-    const batchSize = 1000;
-    const totalRecords = 100000;
+    const batchSize = 500;
+    const totalRecords = 10000;
     const baseTime = Date.now();
 
     // Insert data in batches
@@ -134,7 +134,7 @@
     expect(result.columns).toBeDefined();
     expect(result.columns.length).toBeGreaterThan(0);
     expect(result.rows).toBeDefined();
-    expect(result.rows.length).toBeGreaterThanOrEqual(100000);
+    expect(result.rows.length).toBeGreaterThanOrEqual(10000);
 
     console.log(`Retrieved ${result.rows.length} rows with fetchSize=100`);
     console.log(`Columns: ${result.columns.join(', ')}`);
diff --git a/tests/e2e/MultiNode.test.ts b/tests/e2e/MultiNode.test.ts
index 9a26a94..3636cfd 100644
--- a/tests/e2e/MultiNode.test.ts
+++ b/tests/e2e/MultiNode.test.ts
@@ -99,7 +99,7 @@
       return;
     }
 
-    const concurrentOperations = 50;
+    const concurrentOperations = 30;
     const promises: Promise<any>[] = [];
 
     // Mix of insert and query operations
@@ -136,7 +136,7 @@
       return;
     }
 
-    const operationCount = 20;
+    const operationCount = 15;
     const promises: Promise<any>[] = [];
 
     for (let i = 0; i < operationCount; i++) {