所以我在远程盒子上看着一个带有jmap的堆,我想强制垃圾收集.如果不突然进入jvisualvm或jconsole和朋友,你怎么做?
我知道你不应该在强制垃圾收集的实践中 - 你应该弄清楚为什么堆很大/正在增长.
我也意识到System.GC()实际上并没有强制进行垃圾收集 - 它只是告诉GC你希望它发生.
话虽如此,有办法轻松做到这一点吗?我失踪了一些命令行应用程序?
不确定这是否是一个更适合服务器故障的问题,但我最近一直在搞乱亚马逊RDS并且无法获得我的网站主机mysql用户的'文件'权限.
我假设一个简单的:
grant file on *.* to 'webuser@'%';
Run Code Online (Sandbox Code Playgroud)
会工作,但它没有,我似乎也不能用我的'root'用户.是什么赋予了?我们使用加载数据的原因是因为它一次完成数千次插入是超级快速的.
任何人都知道如何解决这个问题,还是我需要找到一种不同的方式?
这个页面http://docs.amazonwebservices.com/AmazonRDS/latest/DeveloperGuide/index.html?Concepts.DBInstance.html似乎暗示我需要找到一种不同的方法来解决这个问题.
救命?
更新 我不是要尝试导入数据库 - 我只想使用文件加载选项一次插入几十万行.
在挖掘这个是我们拥有的:
mysql> grant file on *.* to 'devuser'@'%';
ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)
mysql> select User, File_priv, Grant_priv, Super_priv from mysql.user;
+----------+-----------+------------+------------+
| User | File_priv | Grant_priv | Super_priv |
+----------+-----------+------------+------------+
| rdsadmin | Y | Y | Y |
| root | N | Y | N |
| devuser | N | N …
Run Code Online (Sandbox Code Playgroud) 我已经使用了boost序列化,但这似乎不允许我生成符合特定模式的xml - 似乎它的目的只是为了坚持一个类的状态.
平台:linux
你们用什么来生成NOT解析xml?
到目前为止,我正在寻找Foredecker自己生成它的路线 - 这不是一个大文件,但我真的不应该找到一个像样的库来正确生成它.
至于boost,我希望能够做的事情是设置节点名称,在我的节点中设置属性,并摆脱随附的所有额外垃圾,因为我真的不在乎必须放我的文件回到那个班级.
我最近将一些代码从java转换为scala,试图自学语言.
假设我们有这个scala类:
class Person() {
var name:String = "joebob"
}
Run Code Online (Sandbox Code Playgroud)
现在我想从java访问它,所以我不能像我在scala那样使用点符号.
所以我可以通过发出以下内容来获取我的var的内容:
person = Person.new();
System.out.println(person.name());
Run Code Online (Sandbox Code Playgroud)
并通过以下方式设置:
person = Person.new();
person.name_$eq("sallysue");
System.out.println(person.name());
Run Code Online (Sandbox Code Playgroud)
这是正确的,因为我们的Person类在javap中看起来像这样:
Compiled from "Person.scala"
public class Person extends java.lang.Object implements scala.ScalaObject{
public Person();
public void name_$eq(java.lang.String);
public java.lang.String name();
}
Run Code Online (Sandbox Code Playgroud)
是的,我可以编写自己的getter/setter但是我讨厌用这个来填充类,考虑到我已经拥有它们并没有多大意义 - 我只想更好地为_ $ eq方法添加别名.(当你处理像antlr这样的东西时,这实际上会变得更糟,因为那时你必须逃避它,它最终看起来像person.name _\$ eq("newname");
注意:我宁愿忍受这个,而不是用更多的setter方法填充我的类.
那么在这种情况下你会做什么?
所以我知道这是一个常见的问题,但似乎没有任何好的答案.
我有一个带有gobs的桶(我不知道有多少)其中的文件数量.它们都在2k以内.
1)如何确定我有多少这些文件而不列出它们?我已经使用了s3cmd.rb,aws/s3和jets3t的东西,我能找到的最好的是一个计算前1000条记录的命令(真正对它们执行GETS).
我一直在使用jets3t的applet,因为它非常适合使用,但即使我无法列出我的所有对象,因为我的堆空间用完了.(可能是因为它正在对所有这些进行GETS并将它们留在记忆中)
2)我怎样才能删除一个桶?我见过的最好的事情是一个并行的删除循环,这有问题,因为有时它会尝试删除相同的文件.这就是我遇到的所有'deleteall'命令.
那些曾经吹嘘自己拥有数百万张图片/ txts的人呢?如果要删除它会发生什么?
3)最后,是否有替代答案?所有这些文件都是txt/xml文件所以我甚至不确定S3是如此关注 - 也许我应该把它移到一个文档数据库中?
它归结为亚马逊S3 API直接缺少2个非常重要的操作 - COUNT和DEL_BUCKET.(实际上有一个删除存储桶命令,但只有当存储桶为空时它才有效)如果有人提出了一个方法,这个方法并不吸引我做这两个操作,我很乐意放弃许多赏金.
UPDATE
只是回答几个问题.我问这个的原因是我在过去一年左右的时间里已经存储了数十万,更像是数百万的2k txt和xml文档.几个月前的最后一次,我希望删除它确实需要DAYS这样做的存储桶,因为存储桶必须是空的才能删除它.这是一个如此痛苦的屁股,我担心在没有API支持的情况下再次这样做.
UPDATE
这晃动了房子!
http://github.com/SFEley/s3nuke/
我在几分钟内就完成了一对价值1-2k档的好几场演出.
我有一个我必须扫描的文本正文,每行包含至少2个,有时是4个部分的信息.问题是每行可以是15-20个不同动作中的1个.
在ruby中,当前代码看起来有点像这样:
text.split("\n").each do |line| #around 20 times.. .............. expressions['actions'].each do |pat, reg| #around 20 times .................
这显然是"问题".通过将所有regexen合并为一个,我确实设法让它更快(在C++中以50%的利润率),但这仍然不是我需要的速度 - 我需要快速解析数千个这些文件!
现在我将它们与正则表达式匹配 - 但这是无法忍受的缓慢.我开始使用ruby并跳到C++,希望我能获得速度提升而且它不会发生.
我随便读了关于PEG和基于语法的解析但看起来有点难以实现.这是我应该走的方向还是有不同的路线?
基本上我正在解析扑克手牌历史,手牌历史的每一行通常都包含我需要收集的2-3位信息:玩家是谁,多少钱或者动作需要什么牌......等等.
需要解析的示例文本:
buriedtens posts $5 The button is in seat #4 *** HOLE CARDS *** Dealt to Mayhem 31337 [8s Ad] Sherwin7 folds OneMiKeee folds syhg99 calls $5 buriedtens raises to $10
收集此信息后,每个操作都会转换为xml节点.
现在我的ruby实现比我的C++快得多,但这是可能的.只是因为我没有用c代码写了超过4 - 5年
更新: 我不想在这里发布所有代码,但到目前为止我的手/秒看起来如下:
588 hands/second -- boost::spirit in c++ 60 hands/second -- 1 very long and complicated regex in c++ (all …
我正在尝试创建一个自动下载新服务器包的脚本.但是,某些诸如"mysql-server"之类的东西无法自动安装,因为您需要先在ncurses接口中进行配置.我查看了手册页,找不到合适的东西.
我不在乎以后是否必须上传/编辑conf文件 - 我只需要安装相应的软件包.
任何人都知道该怎么做除了抓住tarball并自己构建它们?
UPDATE 发现,对于像mysql-server这样的东西,你可以这样做:
DEBIAN_FRONTEND='noninteractive' apt-get install -yq mysql-server
然而,期望看起来像sun-java6-jdk需要的东西; 尚未评估它
通过数万个请求/秒,我希望看到60,000 - > +90,000个请求/秒.
我的设置包括以下内容:
用户--->网络应用 - >消息队列 - >解析器 - >数据库?
我应该提一下,解析器当前可以使用COPY解析/填充大约18750条记录/秒,所以我们在这方面受到限制,直到我们开始添加更多解析器 - 这对我来说不是一个大问题.
我有一个系统,需要能够尽可能快地批量上传尽可能多的记录.同一个系统(或者根据你如何处理它可能会有所不同)应该能够响应分析类型查询,例如:
wonq = "select sum(amount) from actions where player = '@player' and " + "(type = 'award' or type = 'return') and hand = hand_num" lostq = "select sum(amount) from actions where player = 'player' and " + "type != 'award' and type != 'return' and hand = hand_num"
..... 10-15000次(PER USER),因为他们被锁定到另一张桌子.毋庸置疑,我们暂时将这些结果分页为10页/页.
我看了下面的内容:(假设这些都在同一台服务器上)
mysql(运行rdbms的运行) - 能够进入15-20万个请求/秒范围; 在当前条件下,如果我们试图扩展这一点,我们需要一个单独的主机/数据库每次我们需要扩展 - 这是不可行的
couchdb(面向文档的数据库) - 没有突破700个请求/秒; 我真的希望这会拯救我们的屁股 - 不是机会! …
我最近重构了一些代码,使用"加载数据"将行填充到数据库中,并且效果很好 - 但是对于每个记录,我必须将2个文件上传到s3 - 这完全破坏了我获得的华丽速度升级.虽然我能够处理600多个这些文件/秒,但由于s3,它们现在以1 /秒的速度流入.
你有什么办法解决这个问题?看看API,我发现它主要是RESTful所以我不知道该怎么做 - 也许我应该把所有这些都放在数据库中.文本文件通常不超过1.5k.(我们填充的另一个文件是文本的xml表示)
我已经将这些文件缓存在我的Web服务器的HTTP请求中,因为它们被大量使用.
顺便说一句:我们当前的实现使用java; 我还没有尝试过线程,但这可能是一个选择
建议?
我们有一项服务,我们实际上是免费赠送的.
自然地说服务已经成熟,可以滥用.为了防止这种情况,我们执行以下操作:
记录IP地址
使用唯一的电子邮件地址(只有1个帐户/电子邮件地址)
收集更多信息,如圣.地址,电话号码等
使用注册验证码
BHO(我见过扑克室使用这些)
现在,让我们在这里实现 - 没有这将阻止一个坚定的用户.
显然,IP地址可以通过代理(可以通过akismet列入黑名单)进行更改,但如果用户有动态IP或者如果有多个用户在NAT'd网络后面,那么无论如何都会改变(我们可以说几乎所有人都可以吗?)
我可以每小时注册数千个独特的电子邮件地址 - 这不是防御.
我可以从街道地址和电话号码列表中提取虚假信息.
我可以通过验证码解决服务购买验证码(1k只需5美元).
bhos似乎只对可下载的软件有效 - 这是一个网站
还有哪些其他方法可以防止多个用户滥用服务?所有PPC人员如何控制点击欺诈?
我知道我们实际上可以打电话给那个人,但我认为我们不会在短期内尝试这样做.
谢谢,