Here is my express-config
mod_wsgi-express setup-server
--working-directory ${SITE_NAME}
--server-root express --port ${SITE_PORT}
--log-directory ${LOG_DIR} --access-log --access-log-format "${LOG_FORMAT}"
--access-log-name access_${APPL_NAME}.log --error-log-name
error_${APPL_NAME}.log
--python-path ${SITE_ROOT}/lib/python${PYTHON_VERSION}
--threads 10
--service-script tasks $SITE_NAME/$SITE_NAME/timeout/task-queue-manager.py
$SITE_NAME/$SITE_NAME/wsgi.py
Don't see where I can tune number of processes.
Also, I will find out about how many instances can external library handle
and let you know.
On Thursday, March 12, 2015 at 3:38:17 AM UTC+2, Graham Dumpleton wrote:
>
>
> On 12/03/2015, at 4:06 AM, Paul Royik <[email protected] <javascript:>>
> wrote:
>
> I still experience problems with memory overflow on webfaction
> But it seems that problem is not in service:tasks (it takes only 9 MB).
> I don't know why there are so many other threads.
>
> simamura - 1MB - 23:37:52 - 1571 -
> /home/simamura/webapps/django_gradis/apache2/bin/httpd.worker -f
> /home/simamura/webapps/django_gradis/apache2/conf/httpd.conf -k start
> simamura - 43MB - 23:37:52 - 1587 -
> /home/simamura/webapps/django_gradis/apache2/bin/httpd.worker -f
> /home/simamura/webapps/django_gradis/apache2/conf/httpd.conf -k start
> simamura - 43MB - 23:37:52 - 1588 -
> /home/simamura/webapps/django_gradis/apache2/bin/httpd.worker -f
> /home/simamura/webapps/django_gradis/apache2/conf/httpd.conf -k start
> simamura - 2MB - 23:37:52 - 1589 -
> /home/simamura/webapps/django_gradis/apache2/bin/httpd.worker -f
> /home/simamura/webapps/django_gradis/apache2/conf/httpd.conf -k start
>
>
> Your other Apache instance.
>
> simamura - 2MB - 23:42:53 - 23836 - httpd (mod_wsgi-express) -f
> /home/simamura/webapps/django_math/express/httpd.conf -DWSGI_ACCESS_LOG
> -DWSGI_MPM_ENABLE_EVENT_MODULE -DWSGI_MPM_EXISTS_EVENT_MODULE
> -DWSGI_MPM_EXISTS_WORKER_MODULE -DWSGI_MPM_EXISTS_PREFORK_MODULE -k start
>
>
> Apache parent process.
>
> simamura - 3MB - 11:08:36 - 4462 - httpd (mod_wsgi-express) -f
> /home/simamura/webapps/django_math/express/httpd.conf -DWSGI_ACCESS_LOG
> -DWSGI_MPM_ENABLE_EVENT_MODULE -DWSGI_MPM_EXISTS_EVENT_MODULE
> -DWSGI_MPM_EXISTS_WORKER_MODULE -DWSGI_MPM_EXISTS_PREFORK_MODULE -k start
>
> simamura - 3MB - 13:37:49 - 18634 - httpd (mod_wsgi-express) -f
> /home/simamura/webapps/django_math/express/httpd.conf -DWSGI_ACCESS_LOG
> -DWSGI_MPM_ENABLE_EVENT_MODULE -DWSGI_MPM_EXISTS_EVENT_MODULE
> -DWSGI_MPM_EXISTS_WORKER_MODULE -DWSGI_MPM_EXISTS_PREFORK_MODULE -k start
>
>
> Apache child worker processes which proxy to mod_wsgi daemon processes.
>
> simamura - 114MB - 0:16:12 - 10076 - (wsgi:localhost:20241:1092) -f
> /home/simamura/webapps/django_math/express/httpd.conf -DWSGI_ACCESS_LOG
> -DWSGI_MPM_ENABLE_EVENT_MODULE -DWSGI_MPM_EXISTS_EVENT_MODULE
> -DWSGI_MPM_EXISTS_WORKER_MODULE -DWSGI_MPM_EXISTS_PREFORK_MODULE -k start
> simamura - 120MB - 0:15:15 - 11838 - (wsgi:localhost:20241:1092) -f
> /home/simamura/webapps/django_math/express/httpd.conf -DWSGI_ACCESS_LOG
> -DWSGI_MPM_ENABLE_EVENT_MODULE -DWSGI_MPM_EXISTS_EVENT_MODULE
> -DWSGI_MPM_EXISTS_WORKER_MODULE -DWSGI_MPM_EXISTS_PREFORK_MODULE -k start
> simamura - 131MB - 0:11:15 - 20119 - (wsgi:localhost:20241:1092) -f
> /home/simamura/webapps/django_math/express/httpd.conf -DWSGI_ACCESS_LOG
> -DWSGI_MPM_ENABLE_EVENT_MODULE -DWSGI_MPM_EXISTS_EVENT_MODULE
> -DWSGI_MPM_EXISTS_WORKER_MODULE -DWSGI_MPM_EXISTS_PREFORK_MODULE -k start
> simamura - 98MB - 0:10:48 - 20908 - (wsgi:localhost:20241:1092) -f
> /home/simamura/webapps/django_math/express/httpd.conf -DWSGI_ACCESS_LOG
> -DWSGI_MPM_ENABLE_EVENT_MODULE -DWSGI_MPM_EXISTS_EVENT_MODULE
> -DWSGI_MPM_EXISTS_WORKER_MODULE -DWSGI_MPM_EXISTS_PREFORK_MODULE -k start
>
>
> The mod_wsgi daemon processes.
>
> simamura - 9MB - 23:42:53 - 23854 - (wsgi:service:tasks) -f
> /home/simamura/webapps/django_math/express/httpd.conf -DWSGI_ACCESS_LOG
> -DWSGI_MPM_ENABLE_EVENT_MODULE -DWSGI_MPM_EXISTS_EVENT_MODULE
> -DWSGI_MPM_EXISTS_WORKER_MODULE -DWSGI_MPM_EXISTS_PREFORK_MODULE -k start
>
>
> The service process which acts as parent for the task processes.
>
> What are you currently using for the --processes and --threads option to
> mod_wsgi-express when setting up configuration?
>
> The above suggests you are using '--processes 4' and looks completely
> normal. So I don't know what you mean by are so many threads.
>
> What the above doesn't show is how big your transient task worker
> processes are getting when running your algorithm.
>
> That is important as right now there is no limit on how many of those can
> run concurrently except that of how many concurrent processes your mod_wsgi
> daemon processes can handle.
>
> You need to understand realistically how many concurrent instances of your
> algorithm might handle and if you need to implement a queuing mechanism to
> restrict the number then the queue manager will need to change.
>
> Graham
>
> On Thursday, March 5, 2015 at 9:46:34 AM UTC+2, Paul Royik wrote:
>>
>> If you have time, please respond.
>>
>> On Monday, March 2, 2015 at 2:04:46 PM UTC+2, Paul Royik wrote:
>>
>> I made a research and found no suspicious imports.
>> I give you contents of mathsite.timeout module for further research:
>>
>> exceptions.py
>> class TimeoutException(Exception):
>> pass
>>
>> manager.py
>> from mathsite.timeout.timeout import MyManager
>> import os
>> def get_manager():
>> sockpath = os.path.join(os.path.dirname(__file__),
>> 'task-queue-manager.sock')
>> if True:
>> return
>> try:
>> m = MyManager(address=sockpath, authkey='abracadabra')
>> m.connect()
>> return m.Maths()
>> except:
>> return None
>>
>> task-queue-manager.py
>> import os
>>
>> from mathsite.timeout.timeout import MyManager
>>
>> sockpath = os.path.join(os.path.dirname(__file__),
>> 'task-queue-manager.sock')
>>
>> try:
>> os.unlink(sockpath)
>> except OSError:
>> pass
>>
>> m = MyManager(address=sockpath, authkey='abracadabra')
>> s = m.get_server()
>> s.serve_forever()
>>
>> timeout.py
>> import multiprocessing
>> import os
>> import signal
>> from multiprocessing.managers import BaseManager
>> from mathsite.timeout.exceptions import TimeoutException
>>
>>
>> class RunableProcessing(multiprocessing.Process):
>> def __init__(self, func, *args, **kwargs):
>> self.queue = multiprocessing.Manager().Queue(maxsize=1)
>> args = (func,) + args
>> multiprocessing.Process.__init__(self, target=self.run_func,
>> args=args, kwargs=kwargs)
>>
>> def run_func(self, func, *args, **kwargs):
>> try:
>>
>>
>> ...
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "modwsgi" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected] <javascript:>.
> To post to this group, send email to [email protected] <javascript:>
> .
> Visit this group at http://groups.google.com/group/modwsgi.
> For more options, visit https://groups.google.com/d/optout.
>
>
>
--
You received this message because you are subscribed to the Google Groups
"modwsgi" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/modwsgi.
For more options, visit https://groups.google.com/d/optout.