{"id":949,"date":"2009-08-18T17:04:12","date_gmt":"2009-08-18T21:04:12","guid":{"rendered":"http:\/\/fgiasson.com\/blog\/?p=949"},"modified":"2009-08-18T17:04:12","modified_gmt":"2009-08-18T21:04:12","slug":"structwsf-early-querying-metrics","status":"publish","type":"post","link":"https:\/\/fgiasson.com\/blog\/index.php\/2009\/08\/18\/structwsf-early-querying-metrics\/","title":{"rendered":"structWSF Early Querying Metrics"},"content":{"rendered":"<p>We have been running different structWSF instances for about two months now. Each instance is hosting different dataset(s) that are queried for different purposes. I think that it worth taking some time starting to analyze the querying stats of two of these instances of the early Alpha version of structWSF.<\/p>\n<p>The goal is to create some kind of checkpoints that we will be able to use in the future to check how the system improved or deteriorated. It is also to check what kind of metrics we could derive from the current logging system, and to check if we could find any bottle neck or issues with any of the endpoints.<\/p>\n<p>The data used to analyze the instance A span from the 2009-06-08 at 7:16:38 to the 2009-08-18 at 12:28:37.<\/p>\n<p>The data used to analyze the instance B span from the 2009-05-20 at 1:46:31to the 2009-08-18 at 12:40:28.<\/p>\n<h3>structWSF Instance A<\/h3>\n<p>The instance A only has 1 dataset with about 1000 instance records in it. As we can notice bellow, the average time of a query to that instance for all web service endpoints is about 210 milliseconds.<\/p>\n<table border=\"0\">\n<tbody>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\"><strong><span class=\"rescolname\">Number of queries<\/span><\/strong><br \/>\n<span> <\/span><\/td>\n<td style=\"border: 1px solid\"><strong><span class=\"rescolname\">Average time for each query in seconds<\/span><\/strong><\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">27956<\/td>\n<td style=\"border: 1px solid\">0.218252857656909<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The table bellow give us the total number of queries sent to each web service endpoint with an average time for each web service.<\/p>\n<table class=\"listing\" border=\"0\">\n<tbody>\n<tr>\n<td class=\"restitle\" colspan=\"5\"><\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid\"><strong><span class=\"rescolname\">Web Service<\/span><\/strong><\/td>\n<td style=\"border: 1px solid\"><strong>Number of queries<\/strong><\/td>\n<td style=\"border: 1px solid\"><strong>Average time for each query in seconds<\/strong><\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">dataset_create<\/td>\n<td style=\"border: 1px solid\">265<\/td>\n<td style=\"border: 1px solid\">0.126993534699919<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">converter\/tsv<\/td>\n<td style=\"border: 1px solid\">48<\/td>\n<td style=\"border: 1px solid\">0.128808428843714<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">dataset_update<\/td>\n<td style=\"border: 1px solid\">17<\/td>\n<td style=\"border: 1px solid\">0.140141641392576<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">dataset_read<\/td>\n<td style=\"border: 1px solid\">11780<\/td>\n<td style=\"border: 1px solid\">0.144073766884864<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">auth_registrar_access<\/td>\n<td style=\"border: 1px solid\">883<\/td>\n<td style=\"border: 1px solid\">0.145781793788779<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">converter\/bibtex<\/td>\n<td style=\"border: 1px solid\">49<\/td>\n<td style=\"border: 1px solid\">0.149710825511323<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">auth_lister<\/td>\n<td style=\"border: 1px solid\">1970<\/td>\n<td style=\"border: 1px solid\">0.159979685066925<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">search<\/td>\n<td style=\"border: 1px solid\">1397<\/td>\n<td style=\"border: 1px solid\">0.180938945980523<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">browse<\/td>\n<td style=\"border: 1px solid\">8949<\/td>\n<td style=\"border: 1px solid\">0.199636802392004<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">crud_read<\/td>\n<td style=\"border: 1px solid\">638<\/td>\n<td style=\"border: 1px solid\">0.241032384406063<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">dataset_delete<\/td>\n<td style=\"border: 1px solid\">263<\/td>\n<td style=\"border: 1px solid\">0.420157149717388<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">crud_delete<\/td>\n<td style=\"border: 1px solid\">3<\/td>\n<td style=\"border: 1px solid\">0.637878338496<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">converter\/irv<\/td>\n<td style=\"border: 1px solid\">792<\/td>\n<td style=\"border: 1px solid\">0.661979901670313<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">sparql<\/td>\n<td style=\"border: 1px solid\">715<\/td>\n<td style=\"border: 1px solid\">1.123084135322358<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">crud_create<\/td>\n<td style=\"border: 1px solid\">187<\/td>\n<td style=\"border: 1px solid\">1.486844727060763<\/td>\n<\/tr>\n<tr>\n<td class=\"resfooter\" colspan=\"5\"><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>This table gives the number of queries for each returned HTTP response status code by the endpoint. This kind of metrics is useful to debug potential issues<\/p>\n<table class=\"listing\" border=\"0\">\n<tbody>\n<tr>\n<td class=\"restitle\" colspan=\"5\"><\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid\"><strong><span>Web Service<\/span><\/strong><\/td>\n<td style=\"border: 1px solid\"><strong>Number of queries<\/strong><\/td>\n<td style=\"border: 1px solid\"><strong><span>HTTP Response Status<\/span><\/strong><\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">auth_lister<\/td>\n<td style=\"border: 1px solid\">1968<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">auth_lister<\/td>\n<td style=\"border: 1px solid\">2<\/td>\n<td style=\"border: 1px solid\">400<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">auth_registrar_access<\/td>\n<td style=\"border: 1px solid\">883<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">browse<\/td>\n<td style=\"border: 1px solid\">8949<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">converter\/bibtex<\/td>\n<td style=\"border: 1px solid\">45<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">converter\/bibtex<\/td>\n<td style=\"border: 1px solid\">2<\/td>\n<td style=\"border: 1px solid\">400<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">converter\/bibtex<\/td>\n<td style=\"border: 1px solid\">2<\/td>\n<td style=\"border: 1px solid\">406<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">converter\/irv<\/td>\n<td style=\"border: 1px solid\">740<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">converter\/irv<\/td>\n<td style=\"border: 1px solid\">51<\/td>\n<td style=\"border: 1px solid\">400<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">converter\/irv<\/td>\n<td style=\"border: 1px solid\">1<\/td>\n<td style=\"border: 1px solid\">406<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">converter\/tsv<\/td>\n<td style=\"border: 1px solid\">43<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">converter\/tsv<\/td>\n<td style=\"border: 1px solid\">2<\/td>\n<td style=\"border: 1px solid\">400<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">converter\/tsv<\/td>\n<td style=\"border: 1px solid\">3<\/td>\n<td style=\"border: 1px solid\">406<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">crud_create<\/td>\n<td style=\"border: 1px solid\">66<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">crud_create<\/td>\n<td style=\"border: 1px solid\">116<\/td>\n<td style=\"border: 1px solid\">400<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">crud_create<\/td>\n<td style=\"border: 1px solid\">5<\/td>\n<td style=\"border: 1px solid\">500<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">crud_delete<\/td>\n<td style=\"border: 1px solid\">3<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">crud_read<\/td>\n<td style=\"border: 1px solid\">480<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">crud_read<\/td>\n<td style=\"border: 1px solid\">158<\/td>\n<td style=\"border: 1px solid\">400<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">dataset_create<\/td>\n<td style=\"border: 1px solid\">265<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">dataset_delete<\/td>\n<td style=\"border: 1px solid\">261<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">dataset_delete<\/td>\n<td style=\"border: 1px solid\">2<\/td>\n<td style=\"border: 1px solid\">500<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">dataset_read<\/td>\n<td style=\"border: 1px solid\">11767<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">dataset_read<\/td>\n<td style=\"border: 1px solid\">9<\/td>\n<td style=\"border: 1px solid\">400<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">dataset_read<\/td>\n<td style=\"border: 1px solid\">4<\/td>\n<td style=\"border: 1px solid\">500<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">dataset_update<\/td>\n<td style=\"border: 1px solid\">17<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">search<\/td>\n<td style=\"border: 1px solid\">1393<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">search<\/td>\n<td style=\"border: 1px solid\">4<\/td>\n<td style=\"border: 1px solid\">400<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">sparql<\/td>\n<td style=\"border: 1px solid\">693<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">sparql<\/td>\n<td style=\"border: 1px solid\">19<\/td>\n<td style=\"border: 1px solid\">400<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">sparql<\/td>\n<td style=\"border: 1px solid\">3<\/td>\n<td style=\"border: 1px solid\">406<\/td>\n<\/tr>\n<tr>\n<td class=\"resfooter\" colspan=\"5\"><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>structWSF Instance B<\/h3>\n<p>The instance B has 25 datasets with about 2 312 000 instance records in it. As we can notice bellow, the average time of a query to that instance for all web service endpoints is about 550 milliseconds.<\/p>\n<p>Why the average query time per query double with the size of that instance? It is what we will check.<\/p>\n<table class=\"listing\" border=\"0\">\n<tbody>\n<tr>\n<td class=\"restitle\" colspan=\"5\"><\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid\"><strong>Number of queries<\/strong><\/td>\n<td style=\"border: 1px solid\"><strong>Average time for each query in seconds<\/strong><\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">37575<\/td>\n<td style=\"border: 1px solid\">0.556303637714566<\/td>\n<\/tr>\n<tr>\n<td class=\"resfooter\" colspan=\"5\"><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The table bellow give us the total number of queries sent to each web service endpoint with an average time for each web service. What we can notice is that the time it takes to create, delete and update records in the database management systems is related to the size of the dataset. So, what happened and is there anything we can do?<\/p>\n<p>Most of the queries used for this analysis come from queries sent to structWSF v.1.0a1 and v1.0a2. However, something that has a major impact on these results changed in v1.0a3 that has been released last week. The big problem with these numbers is Solr&#8217;s commit time. In version v1.0a1 and v1.0a2, a Solr commit was issued each time something was updated in the index. Commit could take up to minutes sometimes with the size of its index. Since v1.0a3, we give that choice to the system administrator: he can issue commit each time something change in the index, or setup Solr&#8217;s AutoCommit setting properly. That means that we increased the performance of these CUD endpoints by about 95%.<\/p>\n<p>For the SPARQL endpoint, the reason is that it is mostly exclusively used to export data from a structWSF instance. This means that big dump of RDF triples are incurred for each query, which justify the average time per query of 2.1 seconds.<\/p>\n<table class=\"listing\" border=\"0\">\n<tbody>\n<tr>\n<td class=\"restitle\" colspan=\"5\"><\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid\"><strong><span>Web Service<\/span><\/strong><\/td>\n<td style=\"border: 1px solid\"><strong>Number of queries<\/strong><\/td>\n<td style=\"border: 1px solid\"><strong>Average time for each query in seconds<\/strong><\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">dataset_create<\/td>\n<td style=\"border: 1px solid\">173<\/td>\n<td style=\"border: 1px solid\">0.09835156953404<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">auth_registrar_access<\/td>\n<td style=\"border: 1px solid\">1135<\/td>\n<td style=\"border: 1px solid\">0.114255581658327<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">dataset_update<\/td>\n<td style=\"border: 1px solid\">121<\/td>\n<td style=\"border: 1px solid\">0.119028852005636<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">dataset_read<\/td>\n<td style=\"border: 1px solid\">12683<\/td>\n<td style=\"border: 1px solid\">0.159165935205064<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">crud_read<\/td>\n<td style=\"border: 1px solid\">8546<\/td>\n<td style=\"border: 1px solid\">0.23457546435556<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">converter\/bibtex<\/td>\n<td style=\"border: 1px solid\">109<\/td>\n<td style=\"border: 1px solid\">0.405608450600873<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">auth_lister<\/td>\n<td style=\"border: 1px solid\">2315<\/td>\n<td style=\"border: 1px solid\">0.471687612780759<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">search<\/td>\n<td style=\"border: 1px solid\">2313<\/td>\n<td style=\"border: 1px solid\">0.533951056245796<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">browse<\/td>\n<td style=\"border: 1px solid\">9103<\/td>\n<td style=\"border: 1px solid\">0.758227908033767<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">converter\/tsv<\/td>\n<td style=\"border: 1px solid\">8<\/td>\n<td style=\"border: 1px solid\">0.863690733909698<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">sparql<\/td>\n<td style=\"border: 1px solid\">650<\/td>\n<td style=\"border: 1px solid\">2.115058046487879<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">converter\/irv<\/td>\n<td style=\"border: 1px solid\">166<\/td>\n<td style=\"border: 1px solid\">2.681712512510398<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">crud_update<\/td>\n<td style=\"border: 1px solid\">13<\/td>\n<td style=\"border: 1px solid\">4.649851157114154<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">crud_create<\/td>\n<td style=\"border: 1px solid\">75<\/td>\n<td style=\"border: 1px solid\">11.306954870223277<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">dataset_delete<\/td>\n<td style=\"border: 1px solid\">140<\/td>\n<td style=\"border: 1px solid\">27.511527856750207<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">crud_delete<\/td>\n<td style=\"border: 1px solid\">25<\/td>\n<td style=\"border: 1px solid\">34.33350466727492<\/td>\n<\/tr>\n<tr>\n<td class=\"resfooter\" colspan=\"5\"><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>This table gives the number of queries for each returned HTTP response status code by the endpoint.<\/p>\n<table class=\"listing\" border=\"0\">\n<tbody>\n<tr>\n<td class=\"restitle\" colspan=\"5\"><\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid\"><strong><span>Web Service<\/span><\/strong><\/td>\n<td style=\"border: 1px solid\"><strong>Number of queries<\/strong><\/td>\n<td style=\"border: 1px solid\"><strong><span class=\"rescolname\">HTTP Response Status<\/span><\/strong><\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">auth_lister<\/td>\n<td style=\"border: 1px solid\">2275<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">auth_lister<\/td>\n<td style=\"border: 1px solid\">11<\/td>\n<td style=\"border: 1px solid\">400<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">auth_lister<\/td>\n<td style=\"border: 1px solid\">2<\/td>\n<td style=\"border: 1px solid\">406<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">auth_lister<\/td>\n<td style=\"border: 1px solid\">27<\/td>\n<td style=\"border: 1px solid\">500<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">auth_registrar_access<\/td>\n<td style=\"border: 1px solid\">1110<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">auth_registrar_access<\/td>\n<td style=\"border: 1px solid\">25<\/td>\n<td style=\"border: 1px solid\">400<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">browse<\/td>\n<td style=\"border: 1px solid\">9084<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">browse<\/td>\n<td style=\"border: 1px solid\">18<\/td>\n<td style=\"border: 1px solid\">400<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">browse<\/td>\n<td style=\"border: 1px solid\">1<\/td>\n<td style=\"border: 1px solid\">406<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">converter\/bibtex<\/td>\n<td style=\"border: 1px solid\">108<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">converter\/bibtex<\/td>\n<td style=\"border: 1px solid\">1<\/td>\n<td style=\"border: 1px solid\">400<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">converter\/irv<\/td>\n<td style=\"border: 1px solid\">154<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">converter\/irv<\/td>\n<td style=\"border: 1px solid\">12<\/td>\n<td style=\"border: 1px solid\">400<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">converter\/tsv<\/td>\n<td style=\"border: 1px solid\">8<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">crud_create<\/td>\n<td style=\"border: 1px solid\">41<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">crud_create<\/td>\n<td style=\"border: 1px solid\">33<\/td>\n<td style=\"border: 1px solid\">400<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">crud_create<\/td>\n<td style=\"border: 1px solid\">1<\/td>\n<td style=\"border: 1px solid\">500<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">crud_delete<\/td>\n<td style=\"border: 1px solid\">24<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">crud_delete<\/td>\n<td style=\"border: 1px solid\">1<\/td>\n<td style=\"border: 1px solid\">400<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">crud_read<\/td>\n<td style=\"border: 1px solid\">8268<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">crud_read<\/td>\n<td style=\"border: 1px solid\">273<\/td>\n<td style=\"border: 1px solid\">400<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">crud_read<\/td>\n<td style=\"border: 1px solid\">5<\/td>\n<td style=\"border: 1px solid\">406<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">crud_update<\/td>\n<td style=\"border: 1px solid\">4<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">crud_update<\/td>\n<td style=\"border: 1px solid\">9<\/td>\n<td style=\"border: 1px solid\">400<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">dataset_create<\/td>\n<td style=\"border: 1px solid\">171<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">dataset_create<\/td>\n<td style=\"border: 1px solid\">2<\/td>\n<td style=\"border: 1px solid\">400<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">dataset_delete<\/td>\n<td style=\"border: 1px solid\">79<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">dataset_delete<\/td>\n<td style=\"border: 1px solid\">61<\/td>\n<td style=\"border: 1px solid\">500<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">dataset_read<\/td>\n<td style=\"border: 1px solid\">12647<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">dataset_read<\/td>\n<td style=\"border: 1px solid\">11<\/td>\n<td style=\"border: 1px solid\">400<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">dataset_read<\/td>\n<td style=\"border: 1px solid\">25<\/td>\n<td style=\"border: 1px solid\">500<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">dataset_update<\/td>\n<td style=\"border: 1px solid\">113<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">dataset_update<\/td>\n<td style=\"border: 1px solid\">8<\/td>\n<td style=\"border: 1px solid\">500<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">search<\/td>\n<td style=\"border: 1px solid\">2286<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">search<\/td>\n<td style=\"border: 1px solid\">24<\/td>\n<td style=\"border: 1px solid\">400<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">search<\/td>\n<td style=\"border: 1px solid\">3<\/td>\n<td style=\"border: 1px solid\">406<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">sparql<\/td>\n<td style=\"border: 1px solid\">618<\/td>\n<td style=\"border: 1px solid\">200<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">sparql<\/td>\n<td style=\"border: 1px solid\">22<\/td>\n<td style=\"border: 1px solid\">400<\/td>\n<\/tr>\n<tr style=\"border: 1px solid\">\n<td style=\"border: 1px solid\">sparql<\/td>\n<td style=\"border: 1px solid\">6<\/td>\n<td style=\"border: 1px solid\">406<\/td>\n<\/tr>\n<tr class=\"resrowodd\">\n<td style=\"border: 1px solid\">sparql<\/td>\n<td style=\"border: 1px solid\">4<\/td>\n<td style=\"border: 1px solid\">500<\/td>\n<\/tr>\n<tr>\n<td class=\"resfooter\" colspan=\"5\"><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Generating the Stats<\/h3>\n<p>Here is the list of SQL query used to create these stat tables. You can run them locally on your structWSF instance to generate the same kind of statistics.<\/p>\n<p>Timespan of the queries<\/p>\n<blockquote><p>select min(request_datetime) as startdate, max(request_datetime) as enddate from SD.WSF.ws_queries_log;<\/p><\/blockquote>\n<p>Get the average number of milliseconds per query sent to the syste<\/p>\n<blockquote><p>select count(request_processing_time) as nb_queries, avg(request_processing_time) as average_query_time from SD.WSF.ws_queries_log order by ID desc;<\/p><\/blockquote>\n<p>Get the average query time for each web service of a structWSF instance.<\/p>\n<blockquote><p>select requested_web_service, count(request_processing_time) as nb_queries, avg(request_processing_time) as average_query_time from SD.WSF.ws_queries_log GROUP BY requested_web_service ORDER BY average_query_time ASC;<\/p><\/blockquote>\n<p>Status messages counts per web service endpoint<\/p>\n<blockquote><p>select requested_web_service, count(request_http_response_status) as nb_queries, request_http_response_status from SD.WSF.ws_queries_log GROUP BY requested_web_service, request_http_response_status ORDER BY requested_web_service, request_http_response_status;<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>We have been running different structWSF instances for about two months now. Each instance is hosting different dataset(s) that are queried for different purposes. I think that it worth taking some time starting to analyze the querying stats of two of these instances of the early Alpha version of structWSF. The goal is to create [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[155,153],"tags":[162,163],"class_list":["post-949","post","type-post","status-publish","format-standard","hentry","category-osf-web-services","category-structured-dynamics","tag-open-semantic-framework-2","tag-structwsf-2"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/fgiasson.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/949","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fgiasson.com\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fgiasson.com\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fgiasson.com\/blog\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/fgiasson.com\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=949"}],"version-history":[{"count":17,"href":"https:\/\/fgiasson.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/949\/revisions"}],"predecessor-version":[{"id":966,"href":"https:\/\/fgiasson.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/949\/revisions\/966"}],"wp:attachment":[{"href":"https:\/\/fgiasson.com\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=949"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fgiasson.com\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=949"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fgiasson.com\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=949"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}