--
You received this message because you are subscribed to the Google Groups "MyRocks - RocksDB storage engine for MySQL" group.
To unsubscribe from this group and stop receiving emails from it, send an email to myrocks-dev+unsubscribe@googlegroups.com.
To post to this group, send email to myroc...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/myrocks-dev/20171104150712.GE17659%40pslp2.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "MyRocks - RocksDB storage engine for MySQL" group.
To unsubscribe from this group and stop receiving emails from it, send an email to myrocks-dev+unsubscribe@googlegroups.com.
To post to this group, send email to myroc...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/myrocks-dev/20171105121814.GB10522%40pslp2.
For more options, visit https://groups.google.com/d/optout.
We encountered the same issue. In fact, it was Peter Zaitzevs first MYR bug report. There are some other similar issues with MyRocks and realistic/valid defaults and min/max for some sys_vars. This issue is a difficult one because there is a fundamental problem with mysql server code. On startup it establishes what the open_files_limit is, but then provides no 'reservation' scheme for the various parts of the server code, plugins, and storage engines to use to share in their use of this value. As a result, each plugin/engine has to guess about what it can take from the open_files_limit and can easily over-take the limit.
For reference, from the rocksdb wiki :
max_open_files -- RocksDB keeps all file descriptors in a
table cache. If number of file descriptors exceeds
max_open_files, some files are evicted from table cache and
their file descriptors closed. This means that every read must
go through the table cache to lookup the file needed. Set
max_open_files to -1 to always keep all files open, which
avoids expensive table cache calls.
Our initial fix was pretty simple, never allow rocksdb_open_files_limit to exceed the open_files_limit. That was a little short-sighted as we now know that rocksdb can still exceed this limit when workload demands that files are held open for real work and not just held open within the cache. This also doesn't account for files needed by the server (.frm, binlog, InnoDB, TokuDB). So we are now considering limiting the rocksdb_max_open_files to be some 50% of the open_files_limit if the user specified value (or -1 default) exceeds the open_files_limit and allowing any explicit user set value to be anywhere between 0 and open_files_limit to allow educated tuning.
This is of course a simple band-aid to a much bigger issue within
mysql code, but, it should allow us to provide a product that is
expected to work out-of-the box without the need to know they have
to go and tune everything to their environment in order to work an
avoid a crash. To quote Peter Zaitsev - "My main point in this
case - I install Percona Server with RocksDB in the default
install and I run trivial workload (sysbench) and it crashes.
This is not acceptable user behavior. We should not expect users
to understand details such as file descriptor limits.".
I agree with this 100%.
-- George O. Lorch III Senior Software Engineer, Percona US/Arizona (GMT -7) skype: george.ormond.lorch.iii
--
You received this message because you are subscribed to the Google Groups "MyRocks - RocksDB storage engine for MySQL" group.
To unsubscribe from this group and stop receiving emails from it, send an email to myrocks-dev+unsubscribe@googlegroups.com.
To post to this group, send email to myroc...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/myrocks-dev/21fb0abe-8529-5daa-c65e-6b5e0d7cae34%40percona.com.
I/we have an umbrella task in MYR for sensible defaults and
limits with the intention of the resulting changes being sent in
via pull request to fb-mysql. This is included in that set. It
does make sense for a github issue for this, so I created one here
https://github.com/facebook/mysql-5.6/issues/758. We should
probably move any more spit-balling on the technical merits and
possible fixes over to this issue.
Tuning for performance and out-of-the-box operation are two
different tasks that do intersect. Out-of-the-box settings are
expected to always just work, even at the cost of leaving some
performance on the table if it prevents "likely to hit" known
problems, just like this. This is where a good tuning guide comes
in that covers the "Top <n> options to tune MyRocks to your
hardware and workload". All tuning must take into account things
that exist 'outside' MyRocks, such as if users are experimenting
with multiple engines, replication, etc... For example: we
wouldn't want someone to try to tune MyRocks in a vacuum on a
machine where they they have tuned InnoDB to take 80% of available
memory. We are working on such a guide to include with our
documentation as we understand and learn more about what is
important.
To unsubscribe from this group and stop receiving emails from it, send an email to myrocks-dev...@googlegroups.com.
To post to this group, send email to myroc...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/myrocks-dev/CAFbpF8Nd0FE6o_iBJKqOLNbJnWccKmXFS-hf_p6VwrYB2obwhQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
-- George O. Lorch III Senior Software Engineer, Percona US/Arizona (GMT -7) skype: george.ormond.lorch.iii