有没有办法打印Ruby 1.9.x进程的运行时堆栈跟踪?我知道有一个名为pstackRuby 1.8 的实用程序,但该项目似乎在几年前被放弃了:https://github.com/ice799/pstack.Ruby 1.9是否存在类似的内容?非常感谢!
编辑:我有兴趣使用外部工具生成堆栈跟踪(不在与Ruby进程相同的内存空间中运行).
正如@mosch指出的那样,该Kernal#caller方法可以在正在运行的Ruby进程中运行.
您甚至可以构建对Ruby代码的支持,以捕获进程信号并打印堆栈跟踪:
Signal.trap("SIGTERM") { p caller }
Run Code Online (Sandbox Code Playgroud)
参考:http://www.ruby-doc.org/core-1.9.3/Signal.html
我可以在我的代码中构建这个功能,但我更喜欢使用更通用的外部解决方案.谢谢.
我正在寻找有关我目前针对我的服务器运行的一些令人反感的mysql查询的帮助.我的目标是显示最便宜的ebay项目,结束时间不到一个月.
我正在使用MySQL 5.1.
我的查询如下('ebay_items'有~35万行):
explain SELECT `ebay_items`.* FROM `ebay_items`
WHERE (endtime > NOW()-INTERVAL 1 MONTH) ORDER BY price desc\G;
Run Code Online (Sandbox Code Playgroud)
收益率:
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: ebay_items
type: range
possible_keys: endtime
key: endtime
key_len: 9
ref: NULL
rows: 71760
Extra: Using where; Using filesort
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
此查询导致使用71760行的昂贵"文件排序".
show indexes on ebay_items;
Run Code Online (Sandbox Code Playgroud)
收益率(我只包括有问题的指数,'endtime'):
*************************** 7. row ***************************
Table: ebay_items
Non_unique: 1
Key_name: endtime
Seq_in_index: 1
Column_name: endtime
Collation: A
Cardinality: 230697
Sub_part: NULL
Packed: …Run Code Online (Sandbox Code Playgroud)