小编Reu*_*ble的帖子

VisualVM无法取样内存

我有一个配置了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.我做错了什么?

java profiling visualvm

27
推荐指数
3
解决办法
3万
查看次数

AWS Lambda:创建事件源映射时出错:配置模糊定义

创建事件源映射时出错:配置模糊定义.如果前缀对于相同的事件类型重叠,则在两个规则中不能具有重叠的后缀.

我在6-7天前从GUI控制台创建了一个事件,它运行正常.第二天事件刚刚失踪,我无法再在Lambda控制台GUI上看到它.但每个S3对象仍然似乎触发lambda函数不是问题.如果我看不到,那就不好了; 所以我删除了Lambda函数,在创建另一个新函数之前等了5-10秒.现在,当我尝试创建这样的事件源时,我收到相同的内容: 在此输入图像描述

当我单击"提交"时,事件源选项卡显示"您没有此功能的任何事件源",Lambda不会被触发; 这意味着整个应用程序流程现在已经崩溃:(

问题几乎与:" https://forums.aws.amazon.com/thread.jspa?messageID=670712 "但不知何故我不能回复该线程,所以我在这里创建了一个新线程.谁有人遇到这个问题?

事实上,我尝试回应现有的AWS论坛帖子:https://forums.aws.amazon.com/thread.jspa? messageID = 670712 򣯸, 但我一直收到这个有趣的错误:"你的邮件配额已达到. 请稍后再试.".我甚至没有张贴任何东西,我怎么能用完我的配额?

amazon-web-services aws-lambda

26
推荐指数
2
解决办法
2万
查看次数

内存完全由Java ConcurrentHashMap使用(在Tomcat下)

这是一个内存堆栈(作为高速缓存),其包含的只是一个静态的ConcurrentHashMap(CHM).

所有传入的HTTP请求数据都存储在此ConcurrentHashMap中.而且还有一个非同步调度过程中,从相同的ConcurrentHashMap取得数据,并将它们存储到数据库中后删除key.value.

该系统运行良好和平稳,但在以下条件才发现,内存得到了充分利用(2.5GB)和所有的CPU时间被送往执行GC:

-concurrent http命中1000/s

- 在15分钟内保持相同的并发命中

每次写入数据库时​​,异步进程都会记录CHM的剩余大小.CHM.size()保持在Min:300到Max:3500左右

我认为此应用程序存在内存泄漏.所以我使用Eclipse MAT来查看堆转储.运行可疑报告后,我从MAT获得了这些评论:

"org.apache.catalina.session.StandardManager" 通过 "org.apache.catalina.loader.StandardClassLoader @ 0x853f0280" 加载的一个实例占据2135429456(94.76%)字节.该存储器中的"$ java.util.concurrent.ConcurrentHashMap中段[]"通过""加载一个实例积累.

3,646,166 instances of java.util.concurrent.ConcurrentHashMap$Segment retain >= 2,135,429,456 bytes.
Run Code Online (Sandbox Code Playgroud)

Length    # Objects      Shallow Heap      Retained Heap 
0         3,646,166      482,015,968       >= 2,135,429,456 
Run Code Online (Sandbox Code Playgroud)

我将上面的长度0转换为CHM内的空长度记录(每次调用CHM.remove()方法).它与数据库内的记录数一致,创建此转储时,数据库中有3,646,166条记录

奇怪的情况是:如果我暂停压力测试,堆内存中的利用率将逐渐降至25MB.这需要大约30-45分钟.我重新模拟了这个应用程序,曲线看起来类似于下面的VisualVM图: 替代文字

继承人的问题:

1)这看起来像是内存泄漏吗?

2)每次删除调用remove(Object key, Object value)<key:value>从CHM中删除a ,删除的对象是否获得GC?

3)这与GC设置有关吗?我添加了以下GC参数但没有帮助:

-XX:+UseParallelGC

-XX:+UseParallelOldGC

-XX:GCTimeRatio=19

-XX:+PrintGCTimeStamps

-XX:ParallelGCThreads=6

-verbose:gc
Run Code Online (Sandbox Code Playgroud)

4)非常感谢任何解决这个问题的想法!:)

5)可能因为我的所有参考都是难以参考的吗?我的理解是,只要HTTP会话结束,所有那些非静态的变量现在都可用于GC.

注意我尝试用ehcache 2.2.0替换CHM,但是我遇到了相同的OutOfMemoryException问题.我想ehcache也在使用ConcurrentHashMap.

服务器规格:

-Xeon Quad内核,8个线程.

-4GB内存

-Windows 2008 R2

-Tomcat 6.0.29

java

16
推荐指数
3
解决办法
2万
查看次数

如何配置Tomcat使用1个以上的CPU?

我们有一个新客户端,目前我们正在使用100个并发http线程(使用Jmeter)对服务器进行压力测试.问题是即使我们有2个Xeon处理器(每个CPU有4个内核,总共8个内核),我只能看到tomcat使用4个内核而不是8个内核.这4个核心我相信它只属于1个处理器.其他4个线程实际上正在睡觉.

我从Apache文档中得到的印象是,如果我们有多CPU机器,我们应该配置acceptorThreadCount ="2":http: //tomcat.apache.org/tomcat-6.0-doc/config/http.html

我们已将默认连接器更改为tomcatThreadPool,其中maxThreads ="150"minSpareThreads ="4",连接器执行器更改为acceptorThreadCount ="2".但它仍然只使用1个CPU.

知道如何配置利用所有核心(或所有CPU的处理器)?

tomcat

11
推荐指数
1
解决办法
3万
查看次数

Spring AMQP RabbitMQ实现优先级队列

谷歌待了几天,我相信我完全迷失了.我想实现一种有大约3个队列的优先级队列:

  1. 高优先级队列(每日),需要先处理.
  2. 中间优先级队列(每周),如果队列#1中没有项目将处理.(这个队列中的消息是好的,它根本不会处理)
  3. 低优先级队列(每月),如果队列#1和#2中没有项目将处理.(这个队列中的消息是好的,它根本不会处理)

最初,我有以下流程,让消费者使用来自所有三个队列的消息,并检查队列#1,#2和#3中是否有任何项目.然后我意识到这是错误的,因为:

  1. 我完全迷失了一个问题:"我怎么知道它来自哪个队列?".
  2. 我已经在消耗任何队列中的消息了,所以如果我从较低优先级的队列中获取一个对象,如果我发现优先级较高的队列中有消息,我会把它放回队列吗?

以下是我目前的配置,它显示了我是个白痴.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rabbit="http://www.springframework.org/schema/rabbit"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit-1.0.xsd">

<rabbit:connection-factory id="connectionFactory" host="localhost" />

<rabbit:template id="amqpTemplatead_daily" connection-factory="connectionFactory"
    exchange="" routing-key="daily_queue"/>

<rabbit:template id="amqpTemplatead_weekly" connection-factory="connectionFactory"
    exchange="" routing-key="weekly_queue"/>

<rabbit:template id="amqpTemplatead_monthly" connection-factory="connectionFactory"
    exchange="" routing-key="monthly_queue"/>

<rabbit:admin connection-factory="connectionFactory" />

<rabbit:listener-container connection-factory="connectionFactory">
    <rabbit:listener ref="Consumer" method="consume" queue-names="daily_queue" />
</rabbit:listener-container>

<rabbit:listener-container connection-factory="connectionFactory">
    <rabbit:listener ref="Consumer" method="consume" queue-names="weekly_queue" />
</rabbit:listener-container>    

<rabbit:listener-container connection-factory="connectionFactory">
    <rabbit:listener ref="Consumer" method="consume" queue-names="monthly_queue" />
</rabbit:listener-container>    

<bean id="Consumer" class="com.test.Consumer" />

</beans>
Run Code Online (Sandbox Code Playgroud)

知道如何用优先级队列解决这个问题?

ps:我也想知道,如果Apache Camel有我可以依赖的东西吗?

更新1:我刚从Apache Camel看到这个:" https://issues.apache.org/jira/browse/CAMEL-2537 "JMSPriority上的音序器似乎是我正在寻找的,任何人都曾尝试过这个吗?

更新2:假设我在@Gary Russell推荐下使用RabbitMQ的插件,我有以下spring-rabbitmq上下文XML配置,这似乎有意义(由guest ..): …

java apache-camel rabbitmq spring-rabbit spring-amqp

7
推荐指数
1
解决办法
5210
查看次数

杰克逊不能反序列化空阵列

我正在阅读Facebook Insights并试图让Jackson将JSON映射到Object.如果所有数据都没有空,我就可以使用了.但我有一个问题,试图反序列化键值的空数组.即使在尝试这篇文章后:如何防止Map内的空值和bean内的空字段通过Jackson序列化 它没有解决问题:(

这是JSON:

{"data":[{"id":"492640667465465\/insights\/page_fans_country\/lifetime","name":"page_fans_country","period":"lifetime","values":[{"value":{"MY":26315,"ID":311,"SG":77,"NP":63,"MM":56,"PH":51,"GB":44,"US":44,"KR":36,"TH":36,"IN":34,"BD":24,"PK":22,"BN":22,"AU":15,"TW":14,"VN":12,"KH":11,"YE":11,"CA":10,"JP":10,"EG":8,"ZA":7,"SA":6,"ES":6,"HK":6,"FR":6,"IT":5,"IL":5,"IR":5,"NG":5,"LK":5,"BR":5,"IQ":4,"AF":4,"AE":4,"GT":4,"RO":4,"LR":4,"RU":4,"PS":4,"DE":4,"CN":4,"LY":3,"JO":3},"end_time":"2014-08-02T07:00:00+0000"},{"value":{"MY":26326,"ID":315,"SG":77,"NP":63,"MM":56,"PH":54,"GB":44,"US":43,"TH":38,"KR":36,"IN":33,"BD":23,"BN":22,"PK":21,"AU":16,"TW":14,"VN":12,"KH":11,"YE":11,"CA":10,"JP":10,"EG":8,"ZA":7,"SA":7,"ES":6,"HK":6,"FR":6,"IT":5,"IL":5,"IR":5,"NG":5,"LK":5,"BR":5,"IQ":4,"RU":4,"CN":4,"GT":4,"RO":4,"LR":4,"AF":4,"PS":4,"DE":4,"AE":4,"LY":3,"CH":3},"end_time":"2014-08-03T07:00:00+0000"},{"value":{"MY":26338,"ID":312,"SG":79,"NP":63,"MM":55,"PH":52,"US":45,"GB":44,"TH":39,"KR":34,"IN":32,"BD":24,"BN":22,"PK":21,"AU":16,"TW":14,"KH":12,"VN":12,"CA":11,"YE":11,"JP":10,"EG":8,"ZA":7,"SA":7,"ES":6,"HK":6,"FR":6,"IT":5,"CN":5,"IR":5,"NG":5,"LK":5,"BR":5,"IL":5,"IQ":4,"AF":4,"AE":4,"GT":4,"RO":4,"LR":4,"RU":4,"PS":4,"DE":4,"NZ":3,"TR":3},"end_time":"2014-08-04T07:00:00+0000"}],"title":"Lifetime Likes by Country","description":"Lifetime: Aggregated Facebook location data, sorted by country, about the people who like your Page. (Unique Users)"},{"id":"492640667465465\/insights\/page_storytellers_by_country\/day","name":"page_storytellers_by_country","period":"day","values":[{"value":[],"end_time":"2014-08-02T07:00:00+0000"},{"value":[],"end_time":"2014-08-03T07:00:00+0000"},{"value":[],"end_time":"2014-08-04T07:00:00+0000"}],"title":"Daily Country: People Talking About This","description":"Daily: The number of People Talking About the Page by user country (Unique Users)"},{"id":"492640667465465\/insights\/page_storytellers_by_country\/week","name":"page_storytellers_by_country","period":"week","values":[{"value":{"MY":136,"IN":3,"ID":2,"BD":1,"US":1,"TN":1,"AU":1},"end_time":"2014-08-02T07:00:00+0000"},{"value":{"MY":131,"IN":3,"US":1,"TN":1,"AU":1,"ID":1},"end_time":"2014-08-03T07:00:00+0000"},{"value":{"MY":118,"IN":2,"KH":1,"TR":1,"US":1,"TN":1,"AR":1,"AU":1},"end_time":"2014-08-04T07:00:00+0000"}],"title":"Weekly Country: People Talking About This","description":"Weekly: The number of People Talking About the Page by user country (Unique Users)"},{"id":"492640667465465\/insights\/page_storytellers_by_country\/days_28","name":"page_storytellers_by_country","period":"days_28","values":[{"value":{"MY":492,"IN":5,"ID":3,"AU":2,"SG":2,"ZA":2,"US":2,"GB":2,"RO":1,"PH":1,"NP":1,"BD":1,"JO":1,"PS":1,"TN":1,"IR":1,"CA":1,"CN":1,"KR":1},"end_time":"2014-08-02T07:00:00+0000"},{"value":{"MY":499,"IN":5,"ID":3,"GB":2,"SG":2,"ZA":2,"US":2,"RO":1,"PH":1,"NP":1,"BD":1,"AU":1,"CN":1,"KR":1,"TN":1,"IR":1,"CA":1,"JO":1},"end_time":"2014-08-03T07:00:00+0000"},{"value":{"MY":501,"IN":4,"ID":3,"SG":2,"ZA":2,"US":2,"GB":2,"AU":1,"RO":1,"PH":1,"NP":1,"JO":1,"AR":1,"KR":1,"BD":1,"TR":1,"IR":1,"CA":1,"CN":1,"KH":1,"TN":1},"end_time":"2014-08-04T07:00:00+0000"}],"title":"28 Days Country: People Talking About This","description":"28 Days: The number of People Talking About the Page by user country (Unique …
Run Code Online (Sandbox Code Playgroud)

java serialization json jackson

5
推荐指数
2
解决办法
8729
查看次数

AWS Lambda尝试列出DynamoDb表时出错

我没有使用Java获得以下逻辑来使用AWS Lambda:

1)当在S3存储桶中创建新对象时,触发lambda函数(用java编写)

2)在此lambda函数中,列出所有DynamoDB表.

3)如果没有,则创建一个表.

4)将S3对象的详细信息作为项目写入DynamoDB.

我只得到第1项工作.当它到达第2项时,我在下面遇到与权限相关的错误.

任何帮助或建议?

我使用的权限是"Basic with DynamoDB",它具有以下权限:

START请求ID:e9ab5aba-307B-11e5-9663-3188c327cf5e作品尺寸:1024,日期时间:1970-01-01T00:00:00.000Zs3Key:HappyFace.jpgAWS凭据配置文件的文件没有指定路径中找到:/home/sbx_user1052/.aws/凭据:java.lang.IllegalArgumentException异常java.lang.IllegalArgumentException异常:AWS凭据配置文件的文件没有指定路径中找到:/home/sbx_user1052/.aws/credentials在com.amazonaws.auth.profile.internal.ProfilesConfigFileLoader.loadProfiles(ProfilesConfigFileLoader.的java:45)在com.amazonaws.auth.profile.ProfilesConfigFile.loadProfiles(ProfilesConfigFile.java:176)在com.amazonaws.auth.profile.ProfilesConfigFile(ProfilesConfigFile.java:112)在com.amazonaws.auth.profile. ProfilesConfigFile.(ProfilesConfigFile.java:92)位于com.amazonaws.auth.profile.ProfileCredentialsProvider.getCredentials(ProfileCredentialsProvider.java:123)位于com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.invoke(AmazonDynamoDBClient.java:1763)的com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.listTables(AmazonDynamoDBClient.java:1208)com.amazonaws .services.dynamodbv2.document.internal.ListTablesCollection.firstPage(ListTablesCollection.java:46)在com.amazonaws.services.dynamodbv2.document.internal.PageIterator.next(PageIterator.java:45)在com.amazonaws.services.dynamodbv2 .document.internal.IteratorSupport.nextResource(IteratorSupport.java:79)在com.amazonaws.services.dynamodbv2.document.internal.IteratorSupport.hasNext(IteratorSupport.java:47)在com.TriggerDynamoDB.handleRequest(TriggerDynamoDB.java:68 )at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.在java.lang.reflect.Method.invoke(Method.java:497)的sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中的reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

END RequestId:e9ab5aba-307b-11e5-9663-3188c327cf5e REPORT RequestId:e9ab5aba-307b-11e5-9663-3188c327cf5e持续时间:3294.97 ms结算时长:3300 ms内存大小:512 MB最大使用内存:51 MB

代码如下:

public class TriggerDynamoDB implements RequestHandler<S3Event, String> {

public String handleRequest(S3Event s3event, Context context) {
     LambdaLogger logger = context.getLogger();
     try {           
         S3EventNotificationRecord record = s3event.getRecords().get(0);
         // Object key may have spaces or unicode non-ASCII characters.
         String srcKey = record.getS3().getObject().getKey().replace('+', ' ');
            srcKey = URLDecoder.decode(srcKey, "UTF-8");

         long fileSize = record.getS3().getObject().getSizeAsLong();
         DateTime datetime = record.getEventTime(); …
Run Code Online (Sandbox Code Playgroud)

java amazon-s3 amazon-web-services aws-lambda

5
推荐指数
1
解决办法
4774
查看次数

Cassandra CQL无法插入(在输入时没有可行的替代方案)

在设置cassandra(0.8.4)并使用insert进行测试并通过CLI进行选择后,我继续使用CQL进行JDBC(1.0.3).

这就是我在下面的代码中遇到SQLException,有什么想法吗?

Connection conn =  DriverManager.getConnection(url);             

String sql = "INSERT INTO row (KEY, first, last, age) VALUES ( 'Jones', 'Jones', 'Lang', '32');"; // internal error
Statement stmt = conn.createStatement();
stmt.execute(sql);
Run Code Online (Sandbox Code Playgroud)

例外:

java.sql.SQLException: line 1:22 no viable alternative at input 'first'
at org.apache.cassandra.cql.jdbc.CassandraStatement.execute(CassandraStatement.java:160)
at Cassandra.Insert.main(Insert.java:22)
Run Code Online (Sandbox Code Playgroud)

java jdbc cql cassandra

4
推荐指数
1
解决办法
2万
查看次数

如何使用Plone作为文档管理?

我希望为我的公司创建一个文档存储库.原因是因为我的公司有很多文件,而且他们没有版本跟踪.这意味着每个人都在使用不同的版本.

Plone对我来说是新鲜事,我从我的一位好朋友那里得知.太糟糕了他不再回答我的问题了.我相信他,我希望实现他的想法,使用Plone作为我公司的文档存储库.

我已经安装了Plone并设法查看默认的Plone页面,添加所有公司的用户名并将徽标更改为我公司的徽标.现在最大的问题是,如何设置文档存储库?我的想法是为用户创建一个"页面"来添加文件,下载文件,搜索文件和阅读其描述.

有什么牵头让我去?

plone content-management-system

2
推荐指数
1
解决办法
3113
查看次数

Java检测鼠标长按

如果用户按下 JList 组件超过 3 秒,有什么方法可以捕获事件吗?

我发现困难的部分是即使在用户松开鼠标左键之前也需要触发事件。(这可以通过 mousePressed 和 mouseReleased 组合轻松完成)

java events swing

1
推荐指数
1
解决办法
1万
查看次数