Hi folks
Wondering if anyone has seen this before. We have just put in a test instance of ArchivesSpace with a view to a live upgrade; it runs searches perfectly fast, but browsing Creators or Subjects is taking an age for very small returns, and timing out and erroring
on bigger ones**, rendering it pretty unusable. I know the facet links are far more complicated than basic searches, but generally they return pretty speedily. I've tried a number of configurations and reindexes, but to no avail. If anyone has any ideas, I'd
be keen to give them a try.
Cheers
Scott
Running:
AS- version 3.4.1 (the same database seems to be running stably in live on version 3.2.0)
VM- Rocky Linux 8, 16G VM, 4 CPUs.
Java- openjdk version "1.8.0_412"- providing 6G XMX currently (had been on 10G)
SOLR - initially running using the provided Dockerfile (8.10.1) in a container, but have also tried a VM-level 8.11.3- same behaviour. I've experimented with SOLR_HEAP (initially 512M, currently up at 4G) and made some light-touch adjustments to solrconfig.xml.
It is now taking an age to index, perhaps in contrast to what I'd expect!
MySQL- MariaDB 10.6.18, same my.cnf setup as the stable one*. Haven't yet truncated deleted_records as there are only 1500 records in there.
Typical successful call (clicking on the person filter on a search):
I, [2024-05-29T10:22:54.804516 #1639909] INFO -- : Started GET "/search?facets%5B%5D=primary_type&facets%5B%5D=source&facets%5B%5D=rules&filter_term%5B%5D=%7B%22primary_type%22%3A%22agent_person%22%7D&q=john&sort=score+desc" for 10.64.94.3 at 2024-05-29 10:22:54
+0100
I, [2024-05-29T10:22:54.807392 #1639909] INFO -- : Processing by SearchController#do_search as HTML
I, [2024-05-29T10:22:54.807539 #1639909] INFO -- : Parameters: {"facets"=>["primary_type", "source", "rules"], "filter_term"=>["{\"primary_type\":\"agent_person\"}"], "q"=>"john", "sort"=>"score desc"}
Typical failing call (clicking on a specific person facet):
I, [2024-05-29T10:23:49.077545 #1639909] INFO -- : Started GET "/search?filter_term%5B%5D=%7B%22creators%22%3A%22Anderson%2C+Tom%2C+1910-1991+%284927%29%22%7D&q=john&sort=score+desc" for 10.64.94.3 at 2024-05-29 10:23:49 +0100
I, [2024-05-29T10:23:49.082467 #1639909] INFO -- : Processing by SearchController#do_search as HTML
I, [2024-05-29T10:23:49.082641 #1639909] INFO -- : Parameters: {"filter_term"=>["{\"creators\":\"Anderson, Tom, 1910-1991 (4927)\"}"], "q"=>"john", "sort"=>"score desc"}
**my.cnf setup
[mysqld]
basedir = /usr
bind-address = 127.0.0.1
datadir = /var/lib/mysql
expire_logs_days = 10
key_buffer_size = 16M
log-error = /apps/logs/mysql/mariadb.log
max_allowed_packet = 16M
max_binlog_size = 100M
max_connections = 151
pid-file = /var/lib/mysql/mysqld.pid
port = 3306
skip-external-locking
skip-ssl
socket = /var/lib/mysql/mysql.sock
ssl = false
thread_cache_size = 8
thread_stack = 256K
tmpdir = /tmp
user = mysql
*timeout error:
WARNING: ERROR: couldn't handle exception (response is committed)
java.io.IOException: java.util.concurrent.TimeoutException: Idle timeout expired: 30001/30000 ms
at org.eclipse.jetty.util.SharedBlockingCallback$Blocker.block(org/eclipse/jetty/util/SharedBlockingCallback.java:257)
at org.eclipse.jetty.server.HttpOutput.channelWrite(org/eclipse/jetty/server/HttpOutput.java:270)
at org.eclipse.jetty.server.HttpOutput.write(org/eclipse/jetty/server/HttpOutput.java:896)
at java.io.OutputStream.write(java/io/OutputStream.java:75)
at java.lang.reflect.Method.invoke(java/lang/reflect/Method.java:498)
at org.jruby.javasupport.JavaMethod.invokeDirectWithExceptionHandling(org/jruby/javasupport/JavaMethod.java:456)
at org.jruby.javasupport.JavaMethod.invokeDirect(org/jruby/javasupport/JavaMethod.java:317)
at uri_3a_classloader_3a_.jruby.rack.response.invokeOther1:write(uri_3a_classloader_3a_/jruby/rack/uri:classloader:/jruby/rack/response.rb:178)
at uri_3a_classloader_3a_.jruby.rack.response.write_body(uri:classloader:/jruby/rack/response.rb:178)
at org.jruby.RubyArray.each(org/jruby/RubyArray.java:1821)
at org.jruby.RubyArray$INVOKER$i$0$0$each.call(org/jruby/RubyArray$INVOKER$i$0$0$each.gen)
at org.jruby.RubyClass.finvokeWithRefinements(org/jruby/RubyClass.java:514)
at org.jruby.RubyBasicObject.send(org/jruby/RubyBasicObject.java:1755)
at org.jruby.RubyBasicObject$INVOKER$i$send.call(org/jruby/RubyBasicObject$INVOKER$i$send.gen)
at apps.www.archivesspace.gems.gems.rack_minus_2_dot_2_dot_6_dot_2.lib.rack.body_proxy.invokeOther1:__send__(apps/www/archivesspace/gems/gems/rack_minus_2_dot_2_dot_6_dot_2/lib/rack//apps/www/archivesspace/gems/gems/rack-2.2.6.2/lib/rack/body_proxy.rb:41)
at apps.www.archivesspace.gems.gems.rack_minus_2_dot_2_dot_6_dot_2.lib.rack.body_proxy.method_missing(/apps/www/archivesspace/gems/gems/rack-2.2.6.2/lib/rack/body_proxy.rb:41)
at org.jruby.RubyClass.finvokeWithRefinements(org/jruby/RubyClass.java:512)
at org.jruby.RubyBasicObject.send(org/jruby/RubyBasicObject.java:1755)
at org.jruby.RubyBasicObject$INVOKER$i$send.call(org/jruby/RubyBasicObject$INVOKER$i$send.gen)
at apps.www.archivesspace.gems.gems.rack_minus_2_dot_2_dot_6_dot_2.lib.rack.body_proxy.invokeOther1:__send__(apps/www/archivesspace/gems/gems/rack_minus_2_dot_2_dot_6_dot_2/lib/rack//apps/www/archivesspace/gems/gems/rack-2.2.6.2/lib/rack/body_proxy.rb:41)
at apps.www.archivesspace.gems.gems.rack_minus_2_dot_2_dot_6_dot_2.lib.rack.body_proxy.method_missing(/apps/www/archivesspace/gems/gems/rack-2.2.6.2/lib/rack/body_proxy.rb:41)
at org.jruby.RubyClass.finvokeWithRefinements(org/jruby/RubyClass.java:512)
at org.jruby.RubyBasicObject.send(org/jruby/RubyBasicObject.java:1755)
at org.jruby.RubyBasicObject$INVOKER$i$send.call(org/jruby/RubyBasicObject$INVOKER$i$send.gen)
at apps.www.archivesspace.gems.gems.rack_minus_2_dot_2_dot_6_dot_2.lib.rack.body_proxy.invokeOther1:__send__(apps/www/archivesspace/gems/gems/rack_minus_2_dot_2_dot_6_dot_2/lib/rack//apps/www/archivesspace/gems/gems/rack-2.2.6.2/lib/rack/body_proxy.rb:41)
at apps.www.archivesspace.gems.gems.rack_minus_2_dot_2_dot_6_dot_2.lib.rack.body_proxy.method_missing(/apps/www/archivesspace/gems/gems/rack-2.2.6.2/lib/rack/body_proxy.rb:41)
at org.jruby.RubyClass.finvokeWithRefinements(org/jruby/RubyClass.java:512)
at org.jruby.RubyBasicObject.send(org/jruby/RubyBasicObject.java:1755)
at org.jruby.RubyBasicObject$INVOKER$i$send.call(org/jruby/RubyBasicObject$INVOKER$i$send.gen)
at apps.www.archivesspace.gems.gems.rack_minus_2_dot_2_dot_6_dot_2.lib.rack.body_proxy.invokeOther1:__send__(apps/www/archivesspace/gems/gems/rack_minus_2_dot_2_dot_6_dot_2/lib/rack//apps/www/archivesspace/gems/gems/rack-2.2.6.2/lib/rack/body_proxy.rb:41)
at apps.www.archivesspace.gems.gems.rack_minus_2_dot_2_dot_6_dot_2.lib.rack.body_proxy.method_missing(/apps/www/archivesspace/gems/gems/rack-2.2.6.2/lib/rack/body_proxy.rb:41)
at org.jruby.RubyClass.finvokeWithRefinements(org/jruby/RubyClass.java:495)
at org.jruby.RubyBasicObject.send(org/jruby/RubyBasicObject.java:1729)
at org.jruby.RubyKernel.send(org/jruby/RubyKernel.java:2182)
at org.jruby.RubyKernel$INVOKER$s$send.call(org/jruby/RubyKernel$INVOKER$s$send.gen)
at uri_3a_classloader_3a_.jruby.rack.response.invokeOther78:send(uri_3a_classloader_3a_/jruby/rack/uri:classloader:/jruby/rack/response.rb:177)
at uri_3a_classloader_3a_.jruby.rack.response.write_body(uri:classloader:/jruby/rack/response.rb:177)
at uri_3a_classloader_3a_.jruby.rack.response.invokeOther3:write_body(uri_3a_classloader_3a_/jruby/rack/uri:classloader:/jruby/rack/response.rb:98)
at uri_3a_classloader_3a_.jruby.rack.response.respond(uri:classloader:/jruby/rack/response.rb:98)
at org.jruby.rack.AbstractRackDispatcher.process(org/jruby/rack/AbstractRackDispatcher.java:33)
at org.jruby.rack.AbstractFilter.doFilter(org/jruby/rack/AbstractFilter.java:66)
at org.eclipse.jetty.servlet.FilterHolder.doFilter(org/eclipse/jetty/servlet/FilterHolder.java:201)
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(org/eclipse/jetty/servlet/ServletHandler.java:1601)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(org/eclipse/jetty/servlet/ServletHandler.java:548)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(org/eclipse/jetty/server/handler/ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(org/eclipse/jetty/security/SecurityHandler.java:600)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(org/eclipse/jetty/server/handler/HandlerWrapper.java:127)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(org/eclipse/jetty/server/handler/ScopedHandler.java:235)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(org/eclipse/jetty/server/session/SessionHandler.java:1624)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(org/eclipse/jetty/server/handler/ScopedHandler.java:233)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(org/eclipse/jetty/server/handler/ContextHandler.java:1434)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(org/eclipse/jetty/server/handler/ScopedHandler.java:188)
at org.eclipse.jetty.servlet.ServletHandler.doScope(org/eclipse/jetty/servlet/ServletHandler.java:501)
at org.eclipse.jetty.server.session.SessionHandler.doScope(org/eclipse/jetty/server/session/SessionHandler.java:1594)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(org/eclipse/jetty/server/handler/ScopedHandler.java:186)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(org/eclipse/jetty/server/handler/ContextHandler.java:1349)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(org/eclipse/jetty/server/handler/ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(org/eclipse/jetty/server/handler/ContextHandlerCollection.java:234)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(org/eclipse/jetty/server/handler/HandlerWrapper.java:127)
at org.eclipse.jetty.server.Server.handle(org/eclipse/jetty/server/Server.java:516)
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(org/eclipse/jetty/server/HttpChannel.java:400)
at org.eclipse.jetty.server.HttpChannel.dispatch(org/eclipse/jetty/server/HttpChannel.java:645)
at org.eclipse.jetty.server.HttpChannel.handle(org/eclipse/jetty/server/HttpChannel.java:392)
at org.eclipse.jetty.server.HttpConnection.onFillable(org/eclipse/jetty/server/HttpConnection.java:277)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(org/eclipse/jetty/io/AbstractConnection.java:311)
at org.eclipse.jetty.io.FillInterest.fillable(org/eclipse/jetty/io/FillInterest.java:105)
at org.eclipse.jetty.io.ChannelEndPoint$1.run(org/eclipse/jetty/io/ChannelEndPoint.java:104)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(org/eclipse/jetty/util/thread/strategy/EatWhatYouKill.java:338)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(org/eclipse/jetty/util/thread/strategy/EatWhatYouKill.java:315)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(org/eclipse/jetty/util/thread/strategy/EatWhatYouKill.java:173)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(org/eclipse/jetty/util/thread/strategy/EatWhatYouKill.java:137)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(org/eclipse/jetty/util/thread/QueuedThreadPool.java:883)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(org/eclipse/jetty/util/thread/QueuedThreadPool.java:1034)
at java.lang.Thread.run(java/lang/Thread.java:750)
Caused by: java.util.concurrent.TimeoutException: Idle timeout expired: 30001/30000 ms
at org.eclipse.jetty.io.IdleTimeout.checkIdleTimeout(IdleTimeout.java:171)
at org.eclipse.jetty.io.IdleTimeout.idleCheck(IdleTimeout.java:113)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:750)
==========
Scott Renton
Digital Library Development & Systems
Floor F East
Argyle House
515219
The University of Edinburgh is a charitable body, registered in Scotland, with registration number SC005336. Is e buidheann carthannais a th’ ann an Oilthigh Dhùn Èideann, clàraichte an Alba, àireamh clàraidh SC005336.