List:General Discussion« Previous MessageNext Message »
From:Samuel Vogel Date:November 13 2007 4:10pm
Subject:Re: Processlist full of "Opening tables"
View as plain text  
Thanks for the reply. It helped alot, since I did not know where to look.
I read the documentation regarding the issue and some more pages google 
turned up for me.

I did increase my table cache to 16k and my open files are at 30k. I do 
run debian etch 32-bit. How would I determine what reasonable means for 
open files are on my system? I have 4GB Ram and a 2.6 Ghz DualCore.

What also interests me is my key buffer. I have it set to 768MB:
mysql> show status like "key%";
+------------------------+----------+
| Variable_name          | Value    |
+------------------------+----------+
| Key_blocks_not_flushed | 0        |
| Key_blocks_unused      | 661370   |
| Key_blocks_used        | 40169    |
| Key_read_requests      | 22935142 |
| Key_reads              | 65152    |
| Key_write_requests     | 1941899  |
| Key_writes             | 162770   |
+------------------------+----------+
7 rows in set (0.00 sec)

This would mean the following:
65152 Key_reads  / 22935142 Key_read_requests * 100 = 0.29 %

I think this would be an reasonable value. Am I right?

Regards,
Samy

Brent Baisley schrieb:
> The problem is your table cache setting. MySQL will only keep a
> certain amount of tables open and ready for access. Once that limit is
> hit, if a table that is not already open needs to be accessed, it
> needs to close a table to make room for opening the "new" table.
> This doesn't mean you can just set the table cache size really high.
> The operating system has limits as to how many file handles it can
> have open at one time.
> In mysql type this:
> show status like "open%"
>
> Your Opened_tables number is probably huge. That's how many times
> mysql had to open a table for access. Meaning the table wasn't opened
> already. The Open_tables is how many tables MySQL will keep open
> (table cache). You need to increase this number using the table_cache
> variable.
> set global table_cache=#;
>
> The Open_files number from the show status command is important, make
> sure that stays within limits of your operating system.
>
> On Nov 12, 2007 5:09 PM, Samuel Vogel <samy-delux@stripped> wrote:
>   
>> Hey guys,
>>
>> I do run MySQL on a high traffic Server with approximately 10k
>> databases. Since some time MySQL is has become very sluggish.
>> When I look at my processlist it shows more than 25 processes (sometimes
>> of the same & table) with status "Opening tables". Some processes also
>> show "closing tables".
>> Since I am running I shared hosting environment, I can not examine the
>> situation  to such extent, where I could see if table locks are
>> involved. But it does not seem to be the case, since it does not appear
>> for just some users, but for everybody. Also when I run a simple select
>> query it takes more than 2 sec.
>>
>> I guess MySQL is trying to tell me, that my hard drive is too slow. How
>> could I ease this situation ?
>> My key_buffer is set to 1Gb of my 4Gb system memory. Other values are
>> tweaked as well, but I do not think the matter in that case.
>> Would partitioning the disk as Raid 0 ease the situation?
>>
>> What other places do I have to look at, to further narrow down the problem?
>>
>> Regards,
>> Samy
>>
>> --
>> MySQL General Mailing List
>> For list archives: http://lists.mysql.com/mysql
>> To unsubscribe:    http://lists.mysql.com/mysql?unsub=1
>>
>>
>>     
Thread
Processlist full of "Opening tables"Samuel Vogel12 Nov
Re: Processlist full of "Opening tables"Samuel Vogel13 Nov