2013-03-26 15 views
20

Tôi nhận được các thông báo sau trong tệp nhật ký catalina.out khi tắt tomcat. Tôi đang sử dụng Tomcat 7.x và nguồn dữ liệu JDBC Tomcat.tomcat7 - nguồn dữ liệu jdbc - Điều này rất có khả năng tạo ra rò rỉ bộ nhớ

Mar 26, 2013 1:17:52 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc 
SEVERE: The web application [/my_webapp] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered. 
Mar 26, 2013 1:17:52 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads 
SEVERE: The web application [/my_webapp] appears to have started a thread named [MySQL Statement Cancellation Timer] but has failed to stop it. This is very likely to create a memory leak. 

Người đầu tiên tuyên bố rằng DataSource đã bị buộc phải đăng ký để không sao. Tuy nhiên nó là lạ Bởi vì tôi đã cấu hình phương pháp hủy diệt như vậy:

<bean name="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
    <property name="url" value="jdbc:mysql://localhost:3306/mydb"/> 
    <property name="username" value="root"/> 
    <property name="password" value="password"/> 
</bean> 

Không chắc chắn lý do tại sao tôi nhận được giải pháp thứ hai. Một trong những về "MySQL hủy bỏ hẹn giờ hủy bỏ".

Any help is appreciated

EDIT 1: tôi đã cố gắng sửa chữa được đề xuất bởi @Zelldon và nó được thoát khỏi những lỗi đầu tiên. Tuy nhiên, vấn đề liên quan đến MySQL Statement Cancellation Timer vẫn còn tồn tại

+0

Bản sao có thể có của [Cách giải quyết vấn đề rò rỉ bộ nhớ?] (Http://stackoverflow.com/questions/10615118/how-to-solve-memory-leak-problems) – OhadR

+0

Xem nhận xét này để tìm hiểu thêm về MySQL Hủy bỏ vấn đề Chủ đề. https://stackoverflow.com/a/46733027/185565 – Whome

+0

https://stackoverflow.com/a/47019335/3408531 – TiMr

Trả lời

27

Cố gắng đặt Trình kết nối/Trình điều khiển sql trong tomcat/lib và không có trong chiến tranh. Bởi vì mỗi lần bạn triển khai chiến tranh, trình kết nối/trình điều khiển sẽ được tạo đôi khi bộ thu gom rác không thể xóa chúng sẽ kết thúc trong rò rỉ bộ nhớ. Vì vậy, hãy thử di chuyển trình kết nối trên thư mục tomcat/lib.

Vui lòng đọc các câu trả lời sau đây:

Why must the JDBC driver be put in TOMCAT_HOME/lib folder?

How to configure Tomcat to connect with MySQL

+0

Cảm ơn. Xem câu hỏi đã chỉnh sửa của tôi – arahant

+0

bạn đang sử dụng cũng là của các libray khác? – Zelldon

+0

không. DataSource được cung cấp bởi Tomcat 7. Driver là từ MySql Connector/J. Trên hết, tôi có Spring JDBC nhưng tôi đoán rằng không có gì liên quan đến vấn đề này. Ngoài ra, không có thư viện liên quan đến cơ sở dữ liệu khác. – arahant

1

Nó có thể liên quan đến lỗi này trong đầu nối jdbc MySQL: http://bugs.mysql.com/bug.php?id=65909.

Bạn có thể đợi nhóm MySQL sửa lỗi hoặc cố gắng sử dụng Drizzle JDBC connector hoạt động tốt với MySQL (bạn chỉ cần thay đổi tham số trong kết nối url) và trong thử nghiệm của mình, không có loại lỗi này.

+0

trang web mưa phùn đang xuống – redochka