[openstack-dev] [all] Replace mysql-python with mysqlclient
Mike Bayer
mbayer at redhat.com
Mon May 11 19:07:13 UTC 2015
On 5/11/15 2:02 PM, Attila Fazekas wrote:
>
> Not just with local database connections,
> the 10G network itself also fast. Is is possible you spend more time even on
> the kernel side tcp/ip stack (and the context switch..) (Not in physical I/O wait)
> than in the actual work on the DB side. (Check netperf TCP_RR)
>
> The scary part of a blocking I/O call is when you have two
> python thread (or green thread) and one of them is holding a DB lock the other
> is waiting for the same lock in a native blocking I/O syscall.
that's a database deadlock and whether you use eventlet, threads,
asycnio or even just two transactions in a single-threaded script, that
can happen regardless. if your two eventlet "non blocking" greenlets
are waiting forever for a deadlock, you're just as deadlocked as if you
have OS threads.
> If you do a read(2) in native code, the python itself might not be able to preempt it
> Your transaction might be finished with `DB Lock wait timeout`,
> with 30 sec of doing nothing, instead of scheduling to the another python thread,
> which would be able to release the lock.
Here's the "you're losing me" part because Python threads are OS
threads, so Python isn't directly involved trying to "preempt" anything,
unless you're referring to the effect of the GIL locking up the
program. However, it's pretty easy to make two threads in Python hit a
database and do a deadlock against each other, and the rest of the
program's threads continue to run just fine; in a DB deadlock situation
you are blocked on IO and IO releases the GIL.
If you can illustrate a test script that demonstrates the actual failing
of OS threads that does not occur greenlets here, that would make it
immediately apparent what it is you're getting at here.
>
>> [1] http://techspot.zzzeek.org/2015/02/15/asynchronous-python-and-databases/
>>
>>
>>
>>
>>
>>
>>
>> __________________________________________________________________________
>> OpenStack Development Mailing List (not for usage questions)
>> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
More information about the OpenStack-dev
mailing list