-
java多线程实现服务器监控,并发问题(急)5
项目有一个需求,同时监控多台服务器的CPU,内存,硬盘利用率等相关信息
我通过多线程去监控每一台服务器,然后把启动的线程放入一个hashmap中,线程正常结束后,会从map中移除,非正常结束的,会在一定时间之后,从map中取出,进行销毁。
但是现在有一个问题,就是对多台服务器进行监控时,初始化有一个监听的步骤,运行一断时间后,就会出现并发卡死tomcat,我把这块代码放入了synchronized代码块也是如此;
这个问题最开始没有发现,是程序放到linux服务器上后,运行了大概10个小时,服务器负载过高,导致死机之后发现的。
不知道各位有没有什么好的解决办法。
本人以前没有写过多线程,总觉得写的有问题,但是又找不到问题所在,急需各位指导。
问题补充: 问题找到了,是我使用SNMP4J初始化,有一个监听的步骤,后边这个监听没有关闭,导致内存溢出了就。2013年6月13日 14:41
8个答案 按时间排序 按投票排序
-
要复杂监控 直接有开源的 nagios cacti
要想简单监控 轮询snmp访问 线程这东西 呵呵 好是好 不好控制
要是真想用线程 使用线程池2013年6月13日 15:30
-
我通过多线程去监控每一台服务器,然后把启动的线程放入一个hashmap中,线程正常结束后,会从map中移除,非正常结束的,会在一定时间之后,从map中取出,进行销毁。。。。。。。。。。。。就是对多台服务器进行监控时,初始化有一个监听的步骤,运行一断时间后,就会出现并发卡死tomcat,我把这块代码放入了synchronized代码块也是如此;。。。。。。。。。。。。。。。。。你的意思是你写了一个多线程应用,去监控每一台服务器?而且你写的这个多线程应用部署在tomcat下?怎么去监控服务器的?每台服务器有Agent?是你主动去请求服务器返回还是服务器向你这边监控push数据?
2013年6月14日 12:54
-
可能是以下几个原因之一,没有看到代码,不好妄下结论:
. 线程资源耗尽卡死:如果是每次New 一个新的线程,并且线程执行的时间比较长,可能会导致线程越来越多,导致OutofMemroyError(每个线程都会占用512K的栈空间);
. 内存泄露卡死:你的程序存在内存泄露(比如Map里面放的数据比delete的多,导致JVM GC没有办法回收部分对象,倒是OutOfMemroyError
. 程序陷入死循环,我觉得可能性是最高的:如果你使用的是HashMap,那么很可能是你并发的问题没有处理好,google一下就知道了,HashMap在并发访问的时候是有可能死循环的(里面空间不够的时候会进行rehash操作,这时造成死循环的概率比较高),如果是这样的话需要把HashMap更换成Hashtable或者ConcurrentHasMap。
顺便说一下,并不是你加了synchronized关键字就是线程安全的。。。2013年6月13日 16:03
相关推荐
在本项目中,Java被选为实现多线程OCR服务器的语言,因为它提供了丰富的多线程API,如`java.util.concurrent`包,可以方便地创建和管理并发任务。 【项目结构与实现】 “HeliosServer”可能包含以下组件: 1. **...
多线程服务器可以利用线程池管理线程,快速响应新请求,同时在多核处理器上实现负载均衡,提升系统性能。 3. **任务与分析**: 在这个课程设计中,主要目标是创建一个使用Java编程语言实现的多线程网络服务器。这...
1. **Java多线程基础**:Java提供了两种创建线程的方式:继承Thread类和实现Runnable接口。在Web服务器源码中,通常会采用后者,因为这样可以避免单继承的限制,提高代码的可扩展性。 2. **Socket编程**:Web服务器...
Java多线程Web服务器是一种基于Java技术构建的服务器,它利用多线程模型来处理并发的HTTP请求,以实现高效且可扩展的网络服务。在Java中,多线程是并发编程的重要工具,允许程序同时执行多个任务,这对于处理来自...
总的来说,《基于Java多线程的HTTP代理服务器的研究与实现》这篇文档会详细阐述如何利用Java的多线程、网络编程和并发特性来构建一个功能完善的HTTP代理服务器,包括设计思路、核心技术、实现细节和最佳实践。...
Java多线程下载器是一种利用Java编程语言实现的高效文件下载工具,它通过将大文件分割成多个部分并...实现这样一个下载器,不仅锻炼了对Java多线程的理解,还涉及到网络编程、文件操作以及并发控制等多个方面的知识。
【标题】:“自己用JAVA做的一个多线程文件服务器” ...通过学习这个项目,读者可以深入理解Java多线程编程、网络编程以及文件服务器的基本原理,同时也是一个很好的实践案例,帮助提升实际开发技能。
Java NIO服务器的多线程设计有助于提高服务器的并发性能,特别是在高并发场景下,可以有效地利用系统资源,避免大量线程导致的内存消耗和上下文切换开销。同时,通过选择器的使用,减少了对主线程的占用,使得服务器...
Java多线程聊天程序是一种利用Java编程语言实现的并发通信应用,它允许多个用户在同一时间进行交互式的对话。在这个程序中,多线程技术被用来处理并发用户输入和消息传递,确保系统的高效运行和响应性。下面将详细...
为了解决这个问题,Java多线程下载利用了操作系统并发处理的能力,将一个大文件分割成多个小部分,每个部分由一个独立的线程负责下载,从而实现断点续传,提高下载速度。 首先,理解Java多线程的基础概念至关重要。...
### 基于Java的多线程网络爬虫设计与实现 #### 概述 本文档探讨了在Java环境下设计与实现多线程网络爬虫的技术细节与实践方法。网络爬虫(Web Crawler),是一种自动抓取互联网上网页信息的程序或自动化脚本,其...
10. **实战案例分析**:通过分析和解决实际问题,如Web服务器的并发处理、数据库连接池管理等,可以更好地理解和应用Java多线程技术。 以上只是《JAVA多线程教材》可能涵盖的部分内容,实际教材可能会更深入地讨论...
Java多线程与网络编程是两个重要的编程领域,它们在构建高效、响应迅速的应用程序时起着关键作用。在这个特定的项目中,开发者利用Java的多线程特性以及Socket编程来实现一个网络服务,该服务每十分钟会执行一次任务...
3. 多线程编程:在捕获屏幕和发送数据之间保持良好的并发性。 4. 数据压缩:提高数据传输效率,降低网络负载。 5. 移动设备控制:如果要扩展到手机控制,需要理解设备事件转换和指令模拟。 这个项目是一个综合性的...
Java多线程聊天室源码是一个实用的编程示例,它展示了如何在Java环境中实现一个基本的多用户交互系统。这个源代码对于初学者来说是一个很好的学习资源,可以帮助他们理解和应用Java的多线程概念。下面我们将深入探讨...
Java多线程聊天室是一个基于Java编程语言实现的实时通讯应用,主要利用了Java的多线程技术来处理并发用户间的交互。在这个项目中,我们可以深入理解Java的并发编程概念,以及如何在实际应用中应用这些知识。以下将...
在Java编程中,多线程是并发处理任务的关键技术,特别是在服务器端开发和高并发场景下。本篇文章将深入探讨“最简单的线程安全问题”,并结合相关源码和工具来帮助理解。线程安全问题通常涉及到多个线程对共享资源的...
总之,多线程Web服务器在Java中实现的核心在于合理调度线程,高效处理并发请求,并确保线程安全。通过线程池、并发控制机制以及高效的I/O模型,我们可以构建出能应对高并发场景的Web服务器。在实际项目中,还应考虑...
下面我们将深入探讨如何使用Java实现多线程下载。 1. **线程基础**: - 在Java中,`Thread`类是用于创建新线程的基础,通过继承`Thread`类或实现`Runnable`接口,可以创建一个执行特定任务的新线程。 - `start()`...
在Java中,多线程是实现并发处理的关键。代理服务器可能需要同时处理多个客户端的请求,因此每个客户端的连接和请求处理通常在一个单独的线程中进行。这可以通过继承`Thread`类或实现`Runnable`接口来实现。例如,你...