我在应用程序中使用WatchService
。在Windows
环境中运行应用程序时,应用程序使用的CPU
不足1%。当同一个应用程序在我的Linux
服务器上运行时,它将使用100%的CPU
。当禁用WatchService
线程时,CPU
将恢复正常。
我正在使用Centos 5.9
和OpenJDK-1.7.0_x86_64
。
下面是线程:
private static void startDirectoryWatcher() {
if (thWatcherM == null) {
thWatcherM = new Thread(new Runnable() {
@Override
public void run() {
if (mediaMode == MediaMode.Directory && !exit) {
File music = new File(path);
WatchService watcherM = null;
watcherM = music.toPath().getFileSystem().newWatchService();
music.toPath().register(watcherM, StandardWatchEventKinds.ENTRY_CREATE);
while (!exit) {
Thread.sleep(50);
if (watcherM != null) {
WatchKey watchKey = watcherM.take();
List<WatchEvent<?>> events = watchKey
.pollEvents();
for (WatchEvent<?> event : events) {
if (event.kind() == StandardWatchEventKinds.ENTRY_CREATE) {
System.out.println(event.context().toString());
}
}
if (!watchKey.reset()) {
break;
}
}
}
if (watcherM != null) {
watcherM.close();
}
}
}
});
thWatcherM.setName("Dir-Watcher-M");
thWatcherM.start();
}
}
为什么要使用100%的CPU
?
我在Ubuntu16.04上也遇到过同样的问题。
sudo apt-get install inotify-tools大大降低了我的资源使用率。不确定inotify-hookable是否也有帮助,但它附带了更多的依赖关系,所以如果inotify-tools不够的话,可以暂时不要这么做。
Thx由@Thomas Jungblut对此解决方案发表评论。
我有一个HttPURLConnection程序,它正在与运行在同一台机器上(本例中是CentOS)但部署在其他tomcat服务器上的某个应用程序建立连接。这意味着在部署在不同tomcats上的两个应用程序之间建立了HttpConnection,其中两个tomcats都运行在同一台机器上。 下面是我的代码: 然而,同样的代码在生产环境中运行得非常好,每秒大约有50个请求。 当我使用JVisualVM
我在服务器上运行一个Java软件,24小时/天。今天早些时候(在服务器区域设置的午夜后几个小时检测到,这是值得注意的,因为它是本月的第一天),我收到了作为客户端连接到该软件的用户报告,称该软件突然变得不可用。JVM从未被中断或重新启动。它上一次重启是在几天前,从那以后它一直正常运行(使用大约5%或更少的CPU,这是正常的)。 这一次,当我检查该进程时,它实际上是在吞噬它可以从服务器上运行的其他应用
问题内容: 引入了Java 7 以连续监视文件系统。Java 6是否有反向端口? 是否有具有类似功能的纯Java库? 问题答案: 当然是。ApacheVFS正是这样做的。您可以在http://commons.apache.org/vfs/下找到它。它是一个纯Java库,可以监视文件,并且非常易于使用: 上面的代码将监视文件c:/MyFile.txt。如果更改,则调用对象new MyListener
这是我检查HAProxy状态时得到的错误: [root@localhost haproxy]#systemctl status haproxy.service:haproxy.service-haproxy负载平衡器 systemctl重新启动haproxy.service systemctl启用haproxy.service 将浏览器指向http://{IPADDRESS}/submanager
这是来自太空的100%新的伊甸园--一个问题吗? 我的JAVA选项是:-xms10240m-xmx14336m-xx:permsize=192m-xx:maxpermsize=256m-xx:newsize=8192m-xx:maxnewsize=8192m-xx:-disableexplicitgc-xx:+useconcmarksweepgc-xx:cmsinitiatingoccupancy
我对运行的节点进程所看到的情况感到有点困惑。主机上的显示容器使用了超过100%的CPU。这让我认为节点进程正在耗尽CPU。当我在主机上运行并看到节点进程使用了超过100%的CPU时,就确认了这一点。 当我跳入docker容器时,我看到该节点只使用了54%的CPU,并且处理在两个内核之间进行。我希望看到一个核心被最大化,另一个为0,因为Node是单线程的。 我发现了这个QA,看起来操作系统可能在内核