Friday April 28, 2006 | cn=Directory Manager All about Directory Server |
SLAMD 2.0.0-alpha1 is now availableI'm pleased to announce that the SLAMD Distributed Load Generation Engine version 2.0.0-alpha1 is now available for download at http://www.SLAMD.com/ and at https://SLAMD2.dev.java.net/. It's currently characterized as an alpha release because it is not quite feature complete, although our testing has shown it to be quite usable and stable. In fact, the primary reason that I wanted to make this build available now is that it will probably be several months before the official 2.0.0 build is done and there is lots of good stuff already done that people might want to use before I get around to adding the last few features and significantly re-vamping the documentation.A fairly comprehensive list of all the changes between this release and the previous SLAMD 1.8.2 version is available in the Release Notes, but the major changes include:
Posted by cn_equals_directory_manager ( Apr 28 2006, 09:40:49 AM CDT ) Permalink Understanding Directory Server DB GrowthThe size of the Directory Server database is very important for a number of reasons. The on-disk size of the database plays a very large role in cache sizing determinations. The size of the database is directly related to the length of time required to back up and restore the server data. The size of the database also dictates how much disk space you need to have, and this gets multiplied by the number of replicas and backups that you maintain.It's important to note that the initial size of the database after performing an LDIF import may be somewhat misleading because the database will likely not be that size for very long. Rather, it will probably grow over time, and that growth will probably be notably faster just after an import than at other times. There are a number of reasons for this, including:
Ultimately, if you bound the size of the changelog and don't add any new entries then the size of the database will eventually stabilize and become relatively constant, although the stable size may be significantly higher than the initial size. This growth may be lessened by reducing the tombstone and changelog purge delays, since both of those play a role in how much metadata buildup there can be. If you have very large entries, then increasing the database page size may also help significantly because it can avoid the use of overflow pages. Another very important point to remember is that the size of the database will never shrink. Whenever information is removed from the database, the associated space is marked as "free" within the DB and will be re-used if possible before new space is allocated, but it won't be given back to the OS. So this means that if you add millions of entries and then delete them, the database size will increase during the adds, but won't decrease during the deletes (and in fact might increase just a little as the entries are converted to tombstones). Note, however, that we are taking steps to try to reduce the impact of this database growth as much as possible. I can't go into a lot of detail yet, but within the next couple of releases, you should see some significant changes that will both reduce the initial size of the database and will help stem its growth over time. We're also looking at ways that we can alter other processes that may be impacted by the database size (e.g., backup and restore) to make them more efficient. All of this work should help make the Directory Server easier to manage, and should also result in ways that we can make it perform and scale even better than it already does. Posted by cn_equals_directory_manager ( Apr 20 2006, 09:54:36 AM CDT ) Permalink Comments [2] How to Hide an Easter EggWhen I was a kid, I participated in a decent number of Easter egg hunts around this time of the year. In many ways, I suppose I still haven't grown up because I still enjoy finding them. But nowadays, when I go looking for them it's usually in an electronic form. If you know where to look, you can find them in a number of places. You can find them in DVD menus, music CDs, video games, and even embedded in hardware.Of course, developers often embed Easter eggs in software. Some of them aren't all that hard to find, and you may come across them even by accident. I've found several such eggs in DVD menus that way. In fact, a few years ago when I was just a lowly support engineer I stumbled across the Directory Server 5.0 Easter egg when I was examining a core file from a crash that a customer experienced. I won't tell you how to find it, but it shoudln't be that hard if someone is looking for it and has a little ingenuity. Some Easter eggs are a little harder to find. Take SLAMD for example. It's completely open source, and every single line of the code is available for you to reivew, but it takes a lot of the fun out of it if you can just look at the source code to find the Easter eggs. It is therefore necessary to come up with a much better way of hiding them so that it's still not obvious to even the closest scrutiny. First, let me say that I take no credit whatsoever for the mechanism that I've used to hide the Easter eggs in SLAMD. It was entirely the brainchild of David Ely, one of my colleagues (and recently promoted to be my new boss -- congrats, David!) who at the time used it to hide a little something in the administration console for our Identity Synchronization for Windows product. I only tweaked it slightly so that it was better-suited for use in a Web application. So how does it work? First, I come up with a special query string that I want to be used to be able to access the egg, for example "easter=egg". I generate an MD5 digest based on that query string and use that in the source code. If the set of parameters provided to the application doesn't define a valid operation, then I calculate the MD5 digest of the user-provided query string and match it against the digest for the Easter egg. If it does match, then I take the clear-text query string and use it as the key to decrypt a file that has been encrypted using DES. The decrypted contents are then used as the body of an HTML page with the content that I want to use as the egg. It's true that DES is considered pretty weak and MD5 is starting to show some signs of weakness, and it's also true that this same approach would work just as well with other message digest and/or encryption algorithms. However, I don't consider this to be a significant problem because what I'm hiding isn't all that sensitive. Also, the "weakness" of these algorithms is a relative term, and breaking them is still far outside the realm of the casual cryptographer. In SLAMD, most of the work for creating the Easter egg is handled by the src/CreateEgg.java source file. Simply point it at a file containing the clear-text content to use as the body of the page and give it the query string to use to display it. It will then create a new file with the DES-encrypted content and print out the MD5 digest of that query string. That MD5 digest goes in the QUERY_STRING_MD5 variable in the com.sun.slamd.common.Constants class and the encrypted file content gets put in the com/sun/slamd/md5 directory of the lib/slamd_resource.jar file. The final piece of the puzzle is in the com.sun.slamd.admin.AdminServlet class, where doPost checks the MD5 digest of the query string as a last resort and if a match is found calls generatePageFromMD5 to decrypt and display the content. As you can see, neither the query string nor the content that will be displayed when that query string is provided are stored in the clear. They can be stored in the open without giving away the mystery. Posted by cn_equals_directory_manager ( Apr 12 2006, 08:21:45 AM CDT ) Permalink Don't Benchmark with Real DataI spend a fair amount of time working with customers helping them benchmark the Directory Server for one reason or another. In some cases, it's to help them decide whether to go with our Directory Server or a product from another vendor. In others, it's to help examine a performance problem that they've run into. In still others, it's to help demonstrate how the product will behave when they switch to new hardware or new entries or new attributes to existing entries.In many of these cases, the customer wants us to use their actual data in order to get the most accurate results. However, that's almost always a bad idea and would hurt a lot more than it would help. There are many reasons that you should avoid using real data when benchmarking the Directory Server. Some of those include:
Of course, using generated data is completely worthless if that information does not accurately reflect the actual data (or the expected actual data) in the environment. SLAMD contains two tools that can help with this. The first is MakeLDIF, which is a utility that can generate very realistic LDIF data using simple templates. It has been around for quite a while and is included with all released versions of SLAMD. The second is the LDIF Analyzer, which can examine a real-world LDIF file and summarize the data that it contains so that you can more easily create a MakeLDIF template to simulate that information. This is a newer tool that is currently only available by checking out the SLAMD source from CVS, although I do expect to make an alpha release of SLAMD 2.0 available in the very near future. Using these tools, you can create a MakeLDIF template that closely matches your actual data but is much more portable and easier for use in benchmarking. Posted by cn_equals_directory_manager ( Apr 05 2006, 09:59:28 AM CDT ) Permalink Comments [2] |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||