[ 
https://issues.apache.org/jira/browse/SOLR-6734?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16504164#comment-16504164
 ] 

Shawn Heisey commented on SOLR-6734:
------------------------------------

One of the things that I would very much like to have is the ability in the 
admin UI to change things like heap size and restart Solr.  One of the 
challenges around that is that the admin UI is part of Solr itself, so although 
it would be straightforward for Solr to stop itself, there must be a mechanism 
that starts Solr back up.

Another challenge is related to how process forking works.  On Linux, and 
probably other systems as well, when a process forks to spawn another process, 
most aspects of the original process are inherited by the new process.  One of 
those aspects is memory allocation.  So if we embed the daemon into Solr itself 
and a new process is required, and Solr is allocating 8GB of memory from the 
system, the new process will ALSO have 8GB of memory allocated.  It would be 
free to shed that memory, but it's my understanding that it would all be 
allocated before the process would be able to drop it.  On systems with limited 
resources, this could be a serious problem.  As much as it might sound like a 
good idea, embedding the agent daemon into Solr isn't viable.

So here's an idea that I'm starting to like, independent from any sort of 
cluster auto-discovery:

Let's install (up to) three services.  One for Solr, one for the agent, and one 
for ZK, for installs where an external ensemble is not provided.  ZK would be 
handled through a small wrapper Main class that incorporates whatever IPC we 
settle on, whether it's a network socket on localhost or something else.  Solr 
and the agent would also include the same IPC capability.  Because they're all 
separate services, they can be started independently from each other.  The 
agent would be capable of stopping or starting the other two services.

The agent would have a very small heap, and might handle process control by 
running system commands or included scripts.  Not 100% sure about monitoring, 
but some of it might be in the agent and some of it might be through external 
scripts.  The IPC capability in all three services can also serve as a monitor 
point.

The agent would absorb SolrCLI functionality and handle complex control script 
commands in a non-daemon mode, communicating with the services as required.


> Standalone solr as *two* applications -- Solr and a controlling agent
> ---------------------------------------------------------------------
>
>                 Key: SOLR-6734
>                 URL: https://issues.apache.org/jira/browse/SOLR-6734
>             Project: Solr
>          Issue Type: Sub-task
>            Reporter: Shawn Heisey
>            Priority: Major
>
> In a message to the dev list outlining reasons to switch from a webapp to a 
> standalone app, Mark Miller included the idea of making Solr into two 
> applications, rather than just one.  There would be Solr itself, and an agent 
> to control Solr.
> http://mail-archives.apache.org/mod_mbox/lucene-dev/201305.mbox/%3C807476C6-E4C3-4E7E-9F67-2BECB63990DE%40gmail.com%3E



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to