我有一个配置了JMXRemote参数的tomcat实例.本地VisualVM能够在CPU上获取采样器,但不能用于内存.内存按钮显示为灰色,显示:"内存采样:不可用.无法连接到目标应用程序.请确保应用程序在受支持的JDK 6或JDK 7上运行"
JMXRemote参数:
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9086
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
Run Code Online (Sandbox Code Playgroud)
Tomcat JDK版本:
JDK1.6.0.30
Run Code Online (Sandbox Code Playgroud)
VisualVM版本:
Version: 1.6.0_30 (Build 1320-110325); platform 110131-9c8b3bfb3a1e
System: Windows Server 2008 R2 (6.1) , amd64 64bit
Java: 1.6.0_30; Java HotSpot(TM) 64-Bit Server VM (20.5-b03, mixed mode)
Vendor: Sun Microsystems Inc., http://java.sun.com/
Environment: Cp1252; en_US (visualvm)
Userdir: C:\Users\Administrator\AppData\Roaming\.visualvm\7
Clusters: C:\Program Files\Java\jdk1.6.0_30\lib\visualvm\platform
C:\Program Files\Java\jdk1.6.0_30\lib\visualvm\visualvm
C:\Program Files\Java\jdk1.6.0_30\lib\visualvm\profiler
Run Code Online (Sandbox Code Playgroud)
Tomcat版本:
Tomcat 6.0.32
Run Code Online (Sandbox Code Playgroud)
我在win server 2008上运行VisualVM和Tomcat.我做错了什么?
在我的源代码中,我尝试捕获并测量Python中段的时间释放.如何以方便的方式精确测量该段传递时间?
我有几个使用MINA的Java应用程序,它们都使用20个MINA线程.一个应用程序提供大约10,000个并发连接,这些连接通常是空闲的但有时会接收输 对于该应用程序来说,20可能是一个合理的线程数,虽然我没有完全描述它(这个问题正在进行中).另一个应用程序一次只能提供大约15个连接但启动IO工作,因此它们非常繁忙,无论如何都有20个MINA线程,这显然太多了.
对我来说很奇怪的是,两个应用程序总是把他们的CPU时间的30%,有时高达60%用于MINA的select()方法,在VisualVM中进行了分析.调用堆栈如下所示:
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:228)
at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:81)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
- locked <40ca5d54> (a sun.nio.ch.Util$2)
- locked <24649fe8> (a java.util.Collections$UnmodifiableSet)
- locked <3fae9662> (a sun.nio.ch.EPollSelectorImpl)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
at org.apache.mina.transport.socket.nio.NioProcessor.select(NioProcessor.java:72)
at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1093)
at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Run Code Online (Sandbox Code Playgroud)
它似乎是基于一个繁忙的民意调查,这对我来说听起来真的不对.
当我看到数字那么高时,我应该担心吗?是什么导致这个?这是我需要优化的东西还是更类似于睡眠或闲置程序?如果它更像是一个睡眠例程,它会以某种方式被安排为比其他CPU工作更低的优先级?
更新: 这个线程似乎是同一个问题.我遵循了它的建议,现在正在运行Java 1.7.0_45,但我仍然看到select在具有10k连接的应用程序中占用高达90%的CPU时间.
我们正在使用MINA 2.0.4,这意味着修复了相关的错误.
我正在使用Chrome开发工具分析javascript应用程序.
我看到增长的唯一内存区域是System对象总数.
我想知道我怎么能理解导致这种行为的原因,因为工具中没有细节显示哪些系统对象泄露了.
我看了一下应用程序分配,但随着时间的推移它没有太大变化...当我使用时间轴功能堆增长超过500mb
我想实现一个函数跟踪器,它将跟踪一个函数执行的时间.我有以下课程: -
class FuncTracer
{
public:
FuncTracer(LPCTSTR strFuncName_in)
{
m_strFuncName[0] = _T('\0');
if( strFuncName_in ||
_T('\0') != strFuncName_in[0])
{
_tcscpy(m_strFuncName,strFuncName_in);
TCHAR strLog[MAX_PATH];
_stprintf(strLog,_T("Entering Func:- <%s>"),m_strFuncName);
LOG(strLog)
m_dwEnterTime = GetTickCount();
}
}
~FuncTracer()
{
TCHAR strLog[MAX_PATH];
_stprintf(strLog,_T("Leaving Func:- <%s>, Time inside the func <%d> ms"),m_strFuncName, GetTickCount()-m_dwEnterTime);
LOG(strLog)
}
private:
TCHAR m_strFuncName[MAX_PATH];
DWORD m_dwEnterTime;
};
void TestClass::TestFunction()
{
// I want to avoid writing the function name maually..
// Is there any macro (__LINE__)or some other way to
// get the function …Run Code Online (Sandbox Code Playgroud) 如何配置MySQL数据库.我想看到所有SQL都是针对数据库运行的.
我知道你可以这样做:
set profiling=1;SELECT * FROM messages WHERE fromaddress='xxx';SHOW PROFILES;但这似乎只适用于在命令行上运行的东西,我希望看到运行网站的结果.
我为我的数据运行了一个随机的森林,并以矩阵的形式得到了输出.它适用于分类的规则是什么?
PS我希望客户的个人资料作为输出,例如来自纽约的人,在科技行业工作,等等.
如何解释随机森林的结果?
问题
你好!我正在编写一个日志库,我很乐意创建一个在单独的线程中运行的记录器,而所有应用程序线程都只是向它发送消息.我想为这个问题找到性能最佳的解决方案.我在这里需要简单的unboud队列.
途径
我已经创建了一些测试来查看可用解决方案的执行情况,我在这里得到了非常奇怪的结果.我测试了4个实现(下面提供的源代码)基于:
测试
以下是用于测试的源代码:
{-# LANGUAGE NoMonomorphismRestriction #-}
import Control.Concurrent (threadDelay)
import Control.Monad (forever)
import Pipes
import qualified Pipes.Concurrent as Pipes
import Control.Applicative
import Control.Monad (replicateM_)
import System.Environment (getArgs)
import Control.Concurrent.Chan
import Control.Concurrent (forkIO)
import qualified Control.Concurrent.Chan.Unagi as U
import Control.Concurrent.MVar
import Criterion.Main
data Event = Msg String | Status | Quit deriving (Show)
----------------------------------------------------------------------
-- Pipes
----------------------------------------------------------------------
pipesLogMsg = yield (Msg "hello")
pipesManyLogs num = replicateM_ num pipesLogMsg
pipesAddProducer num …Run Code Online (Sandbox Code Playgroud) profiling ×10
java ×2
javascript ×2
performance ×2
c++ ×1
concurrency ×1
cython ×1
haskell ×1
macros ×1
memory ×1
memory-leaks ×1
mina ×1
mysql ×1
output ×1
python ×1
r ×1
selector ×1
sql ×1
stm ×1
visualvm ×1