我有一台运行Postgres 9.1.15的服务器.服务器有2GB的RAM,没有交换.Postgres会间歇性地开始在某些SELECT上出现"内存不足"错误,并且会继续这样做,直到我重新启动Postgres 或连接到它的某些客户端.奇怪的是,当发生这种情况时,free仍会报告超过500MB的可用内存.
select version();:
PostgreSQL 9.1.15 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3, 64-bit
Run Code Online (Sandbox Code Playgroud)
uname -a:
Linux db 3.2.0-23-virtual #36-Ubuntu SMP Tue Apr 10 22:29:03 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
Postgresql.conf(其他一切都被注释掉/默认):
max_connections = 100
shared_buffers = 500MB
work_mem = 2000kB
maintenance_work_mem = 128MB
wal_buffers = 16MB
checkpoint_segments = 32
checkpoint_completion_target = 0.9
random_page_cost = 2.0
effective_cache_size = 1000MB
default_statistics_target = 100
log_temp_files = 0
Run Code Online (Sandbox Code Playgroud)
我从pgtune获得了这些值(我选择了"混合类型的应用程序"),并根据我所阅读的内容摆弄它们,但没有取得太多真正的进展.目前有68个连接,这是一个典型的数字(我还没有使用pgbouncer或任何其他连接的连接器).
/etc/sysctl.conf:
kernel.shmmax=1050451968
kernel.shmall=256458
vm.overcommit_ratio=100 …Run Code Online (Sandbox Code Playgroud) 我正在使用Ruby(而不是Rails)并连接PostgreSQL数据库.我一直试图在Heroku上设置,但是我在启动应用程序时遇到了问题.在本地运行应用程序正常.
我的本地.env看起来像:
postgres://DATABASE_URL=localhost
Run Code Online (Sandbox Code Playgroud)
并且连接到数据库的Ruby连接如下所示:
@@db = PGconn.open(:hostaddr => ENV['DATABASE_URL'], :dbname => '(dbname)', :password => '(password)')
Run Code Online (Sandbox Code Playgroud)
当我推送到Heroku时,应用程序在该行崩溃,并将此错误写入日志:
could not translate host name "postgres://(my heroku db address)" to address: Name or service not known (PG::Error)
Run Code Online (Sandbox Code Playgroud)
那里的数据库地址与DATABASE_URL我的匹配heroku:config.我正在使用共享数据库.
我尝试使用:host => ENV['DATABASE_URL'](而不是:hostaddr),但结果相同.我猜我有一些简单的东西,但是我没有任何好的想法.
我刚从Basecamp收到一封电子邮件,其中包含一个"我在Basecamp上查看"的链接,我可以从我的Gmail收件箱中点击该链接.

他们是怎么做到的?我查看了Gmail中的原始邮件,但我看不到包含相应链接的任何标题 - 它只显示在实际的邮件内容中.这是Gmail/Basecamp特定的合作伙伴关系,还是我通过我的应用程序发送电子邮件时可以做的事情?
我正在使用https://github.com/zdavatz/spreadsheet版本0.8.3
我有代码迭代一个集合,并在每个项目的同一工作簿中创建一个工作表.当集合为空时,执行的代码最终看起来像:
io = StringIO.new
book = Spreadsheet::Workbook.new
book.write(io)
Run Code Online (Sandbox Code Playgroud)
最后一行提出:
TypeError: can't convert nil into Integer
spreadsheet/excel/writer/workbook.rb:636:in `pack'
spreadsheet/excel/writer/workbook.rb:636:in `write_window1'
spreadsheet/excel/writer/workbook.rb:419:in `write_from_scratch'
spreadsheet/excel/writer/workbook.rb:644:in `write_workbook'
spreadsheet/writer.rb:12:in `write'
spreadsheet/workbook.rb:124:in `write'
Run Code Online (Sandbox Code Playgroud)
将我的代码更改为此修复了一些事情:
io = StringIO.new
book = Spreadsheet::Workbook.new
book.create_worksheet if book.worksheets.empty?
book.write(io)
Run Code Online (Sandbox Code Playgroud)
但我宁愿不必将电话包括在内create_worksheet.我的问题是:
a)我的代码中有什么问题吗?
b)这是宝石中的一个错误还是预期崩溃?
以下异常间歇性地出现:
An ActionView::Template::Error occurred
execution expired
vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require'
Run Code Online (Sandbox Code Playgroud)
这是完整的痕迹:
vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require'
vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `block in require'
vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:236:in `load_dependency'
vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require'
vendor/bundle/ruby/1.9.1/gems/tzinfo-0.3.37/lib/tzinfo/timezone.rb:103:in `get'
vendor/bundle/ruby/1.9.1/gems/tzinfo-0.3.37/lib/tzinfo/timezone_proxy.rb:80:in `real_timezone'
vendor/bundle/ruby/1.9.1/gems/tzinfo-0.3.37/lib/tzinfo/timezone_proxy.rb:52:in `period_for_utc'
vendor/bundle/ruby/1.9.1/gems/tzinfo-0.3.37/lib/tzinfo/timezone.rb:458:in `current_period'
vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/core_ext/object/try.rb:36:in `try'
vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/values/time_zone.rb:212:in `utc_offset'
vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/values/time_zone.rb:226:in `<=>'
vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/values/time_zone.rb:334:in `sort'
vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/values/time_zone.rb:334:in `all'
vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.13/lib/action_view/helpers/form_options_helper.rb:507:in `time_zone_options_for_select'
vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.13/lib/action_view/helpers/form_options_helper.rb:612:in `to_time_zone_select_tag'
vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.13/lib/action_view/helpers/form_options_helper.rb:277:in `time_zone_select'
vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.13/lib/action_view/helpers/form_options_helper.rb:654:in `time_zone_select'
Run Code Online (Sandbox Code Playgroud)
当我导航到相关页面时,它加载正常.它似乎对大多数人来说很好,并且只是间歇地(很少)像这样崩溃.我注意到,只要它发生,用户代理就是机器人; 最近的是Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html).但是我担心它有一天会发生在人类身上,所以我想知道是否有人知道我能做些什么呢?
今天就出现了,用户已登录(幸运的是,该用户是我......虽然无法复制它).
execution expired
vendor/bundle/ruby/1.9.1/gems/psych-1.3.4/lib/psych/visitors/visitor.rb:15:in `visit'
Run Code Online (Sandbox Code Playgroud)
跟踪:
vendor/bundle/ruby/1.9.1/gems/psych-1.3.4/lib/psych/visitors/visitor.rb:15:in `visit'
vendor/bundle/ruby/1.9.1/gems/psych-1.3.4/lib/psych/visitors/visitor.rb:5:in `accept'
vendor/bundle/ruby/1.9.1/gems/psych-1.3.4/lib/psych/visitors/emitter.rb:36:in `block in visit_Psych_Nodes_Sequence'
vendor/bundle/ruby/1.9.1/gems/psych-1.3.4/lib/psych/visitors/emitter.rb:36:in `each'
vendor/bundle/ruby/1.9.1/gems/psych-1.3.4/lib/psych/visitors/emitter.rb:36:in `visit_Psych_Nodes_Sequence'
vendor/bundle/ruby/1.9.1/gems/psych-1.3.4/lib/psych/visitors/visitor.rb:15:in `visit'
vendor/bundle/ruby/1.9.1/gems/psych-1.3.4/lib/psych/visitors/visitor.rb:5:in `accept'
vendor/bundle/ruby/1.9.1/gems/psych-1.3.4/lib/psych/visitors/emitter.rb:26:in `block in visit_Psych_Nodes_Document'
vendor/bundle/ruby/1.9.1/gems/psych-1.3.4/lib/psych/visitors/emitter.rb:26:in …Run Code Online (Sandbox Code Playgroud) 我希望在Rails应用程序中的同一视图中为多个时区显示数据,以用于时间和考勤系统.一点背景:
moment().unix().然后,API将其作为一个存储在Postgres数据库中timestamp without time zone.如果我们的组织跨越多个时区,则会出现此问题.例如,在每个澳大利亚首都城市设有办事处的企业将跨越三个时区(在夏令时期间更多).但是,中央办公室中将有一个人需要检查整个组织的数据 - 我们称之为我们的经理.
假设我们的经理位于悉尼,那是上午11点.他们管理着三个办公室 - 一个在悉尼,一个在布里斯班(在DST期间落后悉尼一小时),另一个在阿德莱德(在DST期间落后悉尼半小时).工作人员在当地时间上午9点在三个办公室上班.因此,在经理的仪表板上,时钟输入的所有时间都应显示为上午9点.但是,当前的实现(使用around_filter)将分别显示上午9点,上午8点和上午8点30分的时间,因为它们将使用悉尼时区进行偏移.
对来自不同城市的员工应用了一层过滤,因此可以告诉系统A人来自悉尼,B人来自阿德莱德,C人来自布里斯班.问题 - 我想建议 - 是如何最好地让Rails尽可能有效地向不同时区显示偏移量.
奖金积分:以及显示时间,我们还需要阅读输入.例如,有人可能提前5分钟计时,他们的时间表需要更正.如果当地经理(即布里斯班的某个人)纠正布里斯班员工的时间表,那么这应该相对容易管理 - 鉴于我们知道他们在布里斯班,我们可以将请求的时区设置为布里斯班,让ActiveRecord执行抵消我们.但是如果总经理(总部设在悉尼但管理所有时区)想要进行更改,那么我们需要能够根据他们的时区将他们的输入正确地转换回UTC.关于如何最好地做到这一点的任何建议将是美好的.
问题的具体例子
在我的数据库中,我的clock_ins表如下所示:
user_id (integer) | time (timestamp without time zone)
------------------|-----------------------------------
1 | "2012-09-25 22:00:00.0"
2 | "2012-09-25 22:30:00.0"
3 | "2012-09-25 23:00:00.0"
Run Code Online (Sandbox Code Playgroud)
我的用户表看起来像这样:
user_id (integer) | time_zone (varchar)
------------------|-----------------------------------
1 | "Sydney"
2 | "Adelaide"
3 | "Brisbane"
Run Code Online (Sandbox Code Playgroud)
(这是一种简化,实际上用户和他们的时区之间还有另一种联接)
如果我们将每个用户的时区应用到他们的时间,我们发现他们都在当地时间上午9点.即.2012-09-25 23:00:00.0UTC …
我正在尝试使用下载数据库到我的本地计算机pg_dump.我正在使用的命令是:
pg_dump --host xx.xx.xx.xx --port xxxx --username "xxx" --password --format custom --blobs --verbose --file "testing.db" "xxx"
Run Code Online (Sandbox Code Playgroud)
当它转储数据库中的最后一个表时,它总是崩溃并出现此错误:
pg_dump: Dumping the contents of table "versions" failed: PQgetCopyData() failed.
pg_dump: Error message from server: SSL error: sslv3 alert handshake failure
pg_dump: The command was: COPY public.xxx (columns) TO stdout;
Run Code Online (Sandbox Code Playgroud)
我通过SSH连接到一个服务器,它更接近我正在下载的服务器(我在布里斯班,它在旧金山)并且能够pg_dump毫无问题地完成.所以我知道数据库服务器很好.我怀疑这是暂停,因为它在失败之前到达最后一张桌子; 如果它实际上是一个SSL错误,我预计它会更早出现.也就是说,超时发生在每次失败后不同的时间(两次最近的测试分别在1300s和1812s之后失败).
欢迎提供有关如何调试的任何提示.
我在OS X 10.8.5上.本地pg_dump是9.2.4,服务器是运行psql 9.1.9的Ubuntu Server.
postgresql ×3
ruby ×2
actionview ×1
activerecord ×1
basecamp ×1
gmail ×1
heroku ×1
memory ×1
pg ×1
pg-dump ×1
spreadsheet ×1
ssl ×1
timezone ×1