小编Wil*_*zer的帖子

如何打印Ruby 1.9进程的运行时堆栈跟踪?

有没有办法打印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

我可以在我的代码中构建这个功能,但我更喜欢使用更通用的外部解决方案.谢谢.

ruby unix ruby-1.9

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

在有序的范围查询上优化mysql索引

我正在寻找有关我目前针对我的服务器运行的一些令人反感的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)

mysql sql database

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

标签 统计

database ×1

mysql ×1

ruby ×1

ruby-1.9 ×1

sql ×1

unix ×1