我有一台运行 CentOS 5.9、Apache-Tomcat 5.5.36 的专用服务器。我编写了一个 JAVA Web 应用程序,它每分钟运行一次以从多个传感器收集数据。我正在使用 ScheduledExecutorService 来执行线程。(每个传感器每分钟一个线程,可以有一百多个传感器)线程的流量是
- 从数据库中收集传感器信息。
- 向仪器发送命令以收集数据。
- 使用数据值更新数据库。
还有另一个应用程序每分钟检查一次数据库并将警报发送给用户(如果需要)。我已经使用 jvisualVM 监控了应用程序,我找不到任何内存泄漏。对于每个线程。应用程序工作正常,但一段时间后(24 小时 - 48 小时),应用程序停止工作。我无法找出问题可能是什么,是服务器配置问题,线程太多还是什么?
有谁知道可能出了什么问题,或者有没有人做过思考类的工作?请帮忙,谢谢
更新:包括代码
public class Scheduler {
private final ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(1);
public void startProcess(int start) {
final Runnable uploader = new Runnable() {
@SuppressWarnings("rawtypes")
public void run()
{
//Select data from the database
ArrayList dataList = getData();
for(int i=0;i<dataList.size();i++)
{
String args = dataList.get(i).toString();
ExecutorThread comThread = new ExecutorThread(args...);
comThread.start();
}
}
};
scheduler.scheduleAtFixedRate(uploader, 0, 60 , TimeUnit.SECONDS);
}
}
public class ExecutorThread extends Thread {
private variables...
public CommunicationThread(args..)
{
//Initialise private variable
}
public void run()
{
//Collect data from sensor
//Update Database
}
}