2010-02-18 10 views
13

tôi đang phải đối mặt dưới lỗi OutOfMemor, và JMeter ngừng hoạt động ....JMeter OutOfMemoryError

java.lang.OutOfMemoryError: Java heap space Dumping heap to 
    java_pid4412.hprof ... Heap dump file created [591747609 bytes in 
    71.244 secs] Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space Exception in thread 
    "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space 
    Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: 
    Java heap space Exception in thread "AWT-EventQueue-0" 
    java.lang.OutOfMemoryError: Java heap space 

Làm thế nào nó có thể được giải quyết?
Hệ thống của tôi có đặc điểm kỹ thuật rất tốt như RAM 16 GB, bộ xử lý lõi tứ 2x, với ổ cứng 146 GB.

Có ai có thể giúp tôi không?

+0

Nếu bạn có một máy đặc điểm kỹ thuật tốt vì vậy bạn sẽ phải sử dụng nó bằng cách tăng kích thước heap của bạn hoặc nhiều lý do khác cho lỗi này, tham khảo này để biết thêm chi tiết http://edu.yoursfriends.com/787/out-of-memory-error-in -jmeter –

Trả lời

13

Bạn đã cấp phát bộ nhớ bao nhiêu cho JVM? Một nơi nào đó aroung 512 MB?

Cấu hình là

java -Xms<initial heap size> -Xmx<maximum heap size> 
+0

Đúng vậy -> u sẽ cần phải kiểm tra kích thước heap được phân bổ cho chương trình. –

4

Bạn nên kiểm tra xem bạn không sử dụng một cây kết quả người nghe trong các bài kiểm tra của bạn với nhiều người dùng.

Kiểm tra các phương pháp hay nhất của jmeter để tránh loại sự cố này.

Trân

5

Tôi cũng có vấn đề này và nó không quan trọng bao nhiêu Tôi điều chỉnh cấu hình java -Xms<initial heap size> -Xmx<maximum heap size>, như tôi lúc nào cũng chạy ra khỏi bộ nhớ. Cuối cùng tôi phát hiện ra rằng chạy JMeter trong chế độ GUI (đặc biệt là với người nghe) gây ra một nút cổ chai. Cách tốt nhất để sử dụng JMeter, đặc biệt là để thử nghiệm kéo dài hoặc chạy nhiều máy chủ nô lệ, đang ở chế độ phi GUI, mà trông giống như sau:

jmeter -n -t testplan.jmx -r 

Kiểm tra liên kết này và đọc thế nào để làm từ xa kiểm tra thích hợp cách: http://wiki.apache.org/jmeter/JMeterFAQ#How_to_do_remote_testing_the_.27proper_way.27.3F. Đọc phần về kiểm tra từ xa 'cách thích hợp'.

Hy vọng điều này sẽ hữu ích.

11

Heap dump của bạn cho thấy rằng bạn đang sử dụng cài đặt JMeter mặc định 512 Mo. vì vậy ngay cả khi bạn có 16GB bạn không sử dụng chúng.

Thay thế tùy chọn JVM mặc định trong jmeter.dơi để kích thước phù hợp:

set HEAP=-server -Xms768m -Xmx768m -Xss128k 

set NEW=-XX:NewSize=1024m -XX:MaxNewSize=1024m 

Ngoài ra xem xét:

0

Mặc dù máy chủ của bạn có 16 GB RAM, kích thước heap mặc định JMeter của 512 MB, Tăng kích thước heap bằng cách làm theo các bước dưới đây

1. Open jmeter file using vi editor /text editor 
2. Search for "HEAP" 
3. Change minimum (-Xms) and Maximum (-Xmx) heap values as you required 
4. Save and quit (!wq enter) 
5. Start Jmeter by sh jmeter.sh or bash jmeter.bat or java -jar ApacheJMeter.jar 
0

Điều chỉnh kích thước heap như đã đề cập trong câu trả lời khác và cũng có thể mất một số thực hành tốt nhất vào tài khoản

  • Khi chạy một thử nghiệm (không phải khi xác nhận tất nhiên) sử dụng chế độ phi gui
  • Vô hiệu hóa bất kỳ người nghe nặng nào như Cây Xem Kết quả mà thay vào đó, hãy sử dụng một Trình ghi Dữ liệu Đơn giản và phân tích dữ liệu của bạn sau đó

Hai mục này sẽ tăng đáng kể hiệu suất và đống của bạn kích thước sử dụng

7

Để tối ưu hóa OutOfMemoryError các bước cần được theo dõi:

  • Tăng Kích thước Heap Java:

JMeter là một công cụ Java nó chạy với JVM. Để có được khả năng tối đa, chúng ta cần phải cung cấp tài nguyên tối đa cho JMeter trong khi thực thi. Trước tiên, chúng ta cần tăng kích thước heap heap (Thư mục bin bên trong JMeter, chúng tôi nhận được jmeter.bat/sh).

HEAP=-Xms512m –Xmx512m 

Điều đó có nghĩa là kích thước phân bổ mặc định là tối thiểu 512MB, tối đa 512MB. Cấu hình nó theo từng cấu hình máy riêng của bạn. Nó cũng nên được lưu ý rằng hệ điều hành cũng cần một số lượng bộ nhớ, do đó, tất cả các bộ nhớ RAM vật lý không nên được phân bổ.

  • chạy thử nghiệm trong Non-GUI Mode:

JMeter là Java GUI ứng dụng. Nó cũng có phiên bản không phải là GUI rất chuyên sâu về tài nguyên (CPU/RAM). Nếu chúng tôi chạy Jmeter ở chế độ không phải GUI, nó sẽ tiêu thụ ít tài nguyên và chúng tôi có thể chạy nhiều chuỗi hơn.

  • Tắt TẤT CẢ người nghe trong khi chạy thử. Chúng chỉ để gỡ lỗi và sử dụng chúng để thiết kế kịch bản mong muốn.

Người nghe phải tắt trong khi kiểm tra tải.Việc kích hoạt chúng gây ra chi phí bổ sung, tiêu thụ tài nguyên có giá trị cần thiết bởi các yếu tố quan trọng hơn trong thử nghiệm của bạn.

  • Sử dụng Up-to-Date phần mềm:

Java và JMeter nên được giữ cập nhật.

  • quyết định nào Metrics bạn cần lưu trữ:

Khi nói đến việc lưu trữ các yêu cầu và các tiêu đề phản ứng, kết quả khẳng định và dữ liệu phản ứng có thể tiêu tốn rất nhiều bộ nhớ! Vì vậy, nó là khôn ngoan cố gắng không để lưu trữ các giá trị này trên JMeter trừ khi nó là hoàn toàn cần thiết.

  • Tweak JVM:

Những lập luận JVM sau trong script khởi động JMeter cũng có thể được bổ sung hoặc sửa đổi:

1. Thêm tỷ lệ phân bổ bộ nhớ:

NEW=-XX:NewSize=128m -XX:MaxNewSize=512m

Điều này có nghĩa là bộ nhớ sẽ được tăng lên với tốc độ này.

2.-server - công tắc này JVM thành chế độ "máy chủ" với tối ưu hóa thông số thời gian chạy. Trong chế độ này, JMeter bắt đầu chậm hơn, nhưng thông lượng tổng thể sẽ cao hơn.

3.-d64 - Trong khi sử dụng hệ điều hành 64 bit, sử dụng thông số này có thể cho JVM biết rõ ràng để chạy ở chế độ 64 bit.

4.-XX:+UseConcMarkSweepGC - điều này buộc sử dụng bộ thu gom rác CMS. Nó sẽ làm giảm lưu lượng tổng thể nhưng dẫn đến các bộ sưu tập rác chuyên sâu CPU ngắn hơn nhiều.

5.-XX:+DisableExplicitGC - điều này ngăn cản các ứng dụng buộc phải thu gom rác thải đắt tiền và giúp tránh những gián đoạn không mong muốn.

Để hiểu rõ hơn và chi tiết hơn, blog này về 9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure là hữu ích.

1

Bạn phải thay đổi HEAP SIZE trong tệp jmeter.bat. Trước tiên, bạn phải chuyển đổi 2GB hoặc 6GB (OR kích thước mà bạn muốn đặt) kích thước thành mb và sau đó lưu nó và khởi chạy lại .bat tập tin.

Set giá trị cho "thiết lập Heap = - Xms512m -Xmx512m"

1

Trong Jmeter phiên bản 3.x nó được đề cập trong $ JMETER_HOME/bin/jemter.sh (jmeter.bat):

## Biến môi trường:
## JVM_ARGS - tùy chọn java args, ví dụ:-Dprop = val
## e.g.
## JVM_ARGS = "- Xms512m -Xmx512m" jmeter.sh, vv

như vậy trong trường hợp của bạn, bạn có thể thiết lập nó càng nhiều càng tốt đủ yêu cầu của bạn ví dụ:

JVM_ARGS="-Xms1024m -Xmx1024m"