是否有一个命令行工具(Linux)来检查Java应用程序的堆大小(和使用的内存)?
我试过jmap.但它提供了信息.关于内部记忆区域,如Eden/PermGen等,这对我没用.
我正在寻找类似的东西:
最大内存:1GB
最小内存:256 MB
堆内存:700 MB已
用内存:460 MB
就这样.我知道我可以在JConsole等中看到这个,但我需要一个命令行工具(不能启用JMX等)
任何这样的工具/命令?
我有一个Spring MVC应用程序.它使用自己的自定义登录页面.成功登录后,会在HTTPSession中放置一个"LOGGED_IN_USER"对象.
我想只允许经过身份验证的用户访问URL.我知道我可以通过使用网络过滤器实现这一目标.但是,这部分我想使用Spring Security(我的检查将保持不变 - 在HTTPSession中查找'LOGGED_IN_USER'对象,如果存在,您已登录).
我的约束是我目前无法改变登录行为 - 这还不会使用Spring Security.
我可以使用Spring Security的哪个方面单独实现此部分 - 检查请求是否经过身份验证(来自登录用户)?
我有一个Java应用程序(基于Web),有时显示非常高的CPU利用率(几乎90%)几个小时.Linux TOP命令显示了这一点.在应用程序重启时,问题就消失了.
所以要调查:
我使用Thread Dump来查找线程正在做什么.在'RUNNABLE'州中发现了几个线程,在少数其他状态中发现了一些线程.在重复的线程转储中,我确实看到一些始终存在于'RUNNABLE'状态中的线程.所以,他们似乎是罪魁祸首.
但我无法确定,哪个Thread正在占用CPU或进入无限循环(从而导致高CPU利用率).
日志不一定有用,因为违规代码可能没有记录任何内容.
我如何调查 - 应用程序的哪个部分或什么线程导致高CPU利用率? - 还有其他想法吗?
我不是Drools专家.不过,我对它有一些熟悉,通过试验它.我无法理解,为什么我需要它.
我的典型应用是商业Web应用程序.是的,他们确实有一些规则.但这些是使用数据库表,SQL查询和一个很好的用户界面实现的,以便业务用户修改规则.规则不是任意的,它们在投入生产之前都经过仔细考虑.
我的商业用户永远不会使用(Drools)脚本语言来修改任何东西.单独修改规则.他们非常高兴使用UI屏幕来修改规则.另外,如果我让它们靠近它,它们可以在Drools文件中产生无数的语法错误.
再次
- 为什么我应该在这种情况下使用Drools?
- 我见过的Drools狂热分子坚持认为我应该改变我的所有代码以利用Drools.
那么,Drools有用吗?我不确定.
我有一个UIPageViewController,当我们向左或向右滑动以翻页时它工作正常.
class ViewController: UIViewController, UIPageViewControllerDataSource {
...
}
Run Code Online (Sandbox Code Playgroud)
现在我打算在页面上提供上一个/下一个按钮,以便通过单击这些按钮来转动页面.
如何触发向左/向右滑动或以编程方式翻页?
这是Swift语言的问题,而不是Objective-C.
在线程本地中设置值:
//Class A holds the static ThreadLocal variable.
Class A{
public static ThreadLocal<X> myThreadLocal = new ThreadLocal<X>();
....
}
//A Class B method sets value in A's static ThreadLocal variable
class B{
{
public void someBmethod(){
X x = new X();
A.myThreadLocal.set(x);
}
}
//Class C retrieves the value set in A's Thread Local variable.
Class C {
public void someCMethod(){
X x = A.myThreadLocal.get();
}
...
}
Run Code Online (Sandbox Code Playgroud)
Quesiton:
现在假设这是一个Web应用程序,并且线程按顺序执行:B.someBMethod,C.someCMethod.
执行B的someBMethod的多个线程将最终更新SAME A的静态ThreadLocal变量myThreadLocal,从而击败了ThreadLocal变量的目的.(对于ThreadLocal使用静态是根据文档推荐的.)
C的someCMethod,虽然从ThreadLocal中检索值可能无法获得"当前"线程设置的值.
我在这里失踪了什么?
我有一个AWS Lambda函数,它作为REST API公开.
当通过aws lambda控制台上的Test按钮调用它时,它可以正常工作.
当通过在线REST客户端调用它时,我收到403错误.它被创建为需要 - 无需身份验证(打开).
我错过了什么配置?
我无法通过ssh访问Amazon EC2实例,因为我在防火墙后面.所以,我想在22以外的端口上运行ssh,比如80或443.
我尝试使用以下"用户数据"通过Web管理控制台启动Amazon EC2实例:
#!/bin/bash -ex
perl -pi -e 's/^#?Port 22$/Port 80/' /etc/ssh/sshd_config
service sshd restart || service ssh restart
Run Code Online (Sandbox Code Playgroud)
这个想法是上面的脚本将在实例启动时执行并将ssh从端口22切换到端口80.(参考:http://alestic.com/2010/12/ec2-ssh-port-80)
但是仍然无法在端口80上访问ssh.显然,"用户数据"脚本在启动时没有被执行?
我只能"通过Web管理控制台"启动停止实例,而不是从命令行启动停止实例(在防火墙后面)
有任何想法吗?
我一直在评估Drools作为规则引擎,用于我们的业务Web应用程序.
我的用例是订单管理应用程序.
规则如下:
- 如果用户类型为"特殊",则额外提供5%的折扣.
- 如果用户已经进行了10次以上的购买,请额外享受3%的折扣.
- 如果产品类别为"旧",请向价值5美元的用户赠送礼品篮.
- 如果产品类别为"新",请向价值1美元的用户赠送礼品篮
- 如果用户过去已购买超过1000美元,则免费送货
我看到的直接挑战是:
- 没有有意义的用户界面可以提供给最终用户修改规则.
- 从最终用户的角度来看,Guvnor UI或任何修改drl文件的编辑器都是不可接受的 - 这些规则中的大多数都将在db中可用的大量数据上运行
所以,
- 我想让管理员用户在我的Web App UI中指定这些规则.
- 我可以将这些"规则"存储在数据库中,然后通过Drools对它们进行操作 - 至少允许我通过"自己的"UI"修改"这些规则.所以这就像数据库中的决策表.
- 最好的方法是什么?
rpm install命令,安装整个文件,如:/ usr/bin,/ usr/sbin,/ etc /,/ usr/share
这样很难弄清楚安装的所有内容.是否可以强制rpm将所有内容安装在一个目录中?
java ×6
drools ×2
linux ×2
performance ×2
rules ×2
amazon-ec2 ×1
aws-lambda ×1
cloud ×1
cpu-usage ×1
heap ×1
install ×1
ios ×1
java-ee ×1
memory ×1
rpm ×1
rule-engine ×1
scripting ×1
security ×1
spring ×1
spring-mvc ×1
ssh ×1
swift ×1
thread-local ×1